pythonÖÐeval, exec, execfile,ºÍcompile
eval(str [,globals [,locals ]])º¯Êý½«×Ö·û´®strµ±³ÉÓÐЧPython±í´ïʽÀ´ÇóÖµ£¬²¢·µ»Ø¼ÆËã½á¹û¡£
ͬÑùµØ, execÓï¾ä½«×Ö·û´®strµ±³ÉÓÐЧPython´úÂëÀ´Ö´ÐÐ.Ìṩ¸øexecµÄ´úÂëµÄÃû³Æ¿Õ¼äºÍexecÓï¾äµÄÃû³Æ¿Õ¼äÏàͬ.
×îºó£¬execfile(filename [,globals [,locals ]])º¯Êý¿ÉÒÔÓÃÀ´Ö´ÐÐÒ»¸öÎļþ,¿´ÏÂÃæµÄÀý×Ó:
>>> eval('3+4')
7
>>> exec 'a=100'
>>> a
100
>>> execfile(r'c:\test.py')
hello,world!
>>>
ĬÈϵģ¬eval(),exec,execfile()ËùÔËÐеĴúÂ붼λÓÚµ±Ç°µÄÃû×Ö¿Õ¼äÖÐ. eval(), exec,ºÍ execfile()º¯ÊýÒ²¿ÉÒÔ½ÓÊÜÒ»¸ö»òÁ½¸ö¿ÉÑ¡×Öµä²ÎÊý×÷Ϊ´úÂëÖ´ÐеÄÈ«¾ÖÃû×Ö¿Õ¼äºÍ¾Ö²¿Ãû×Ö¿Õ¼ä. ÀýÈç:
1 globals = {'x': 7,
2 'y': 10,
3 'birds': ['Parrot', 'Swallow', 'Albatross']
4 }
5 locals = { }
6
7 # ½«ÉϱߵÄ×Öµä×÷Ϊȫ¾ÖºÍ¾Ö²¿Ãû³Æ¿Õ¼ä
8 a = eval("3*x + 4*y", globals, locals)
9 exec "for b in birds: print b" in globals, locals # ×¢ÒâÕâÀïµÄÓï·¨
10 execfile("foo.py", globals, locals)
Èç¹ûÄãÊ¡ÂÔÁËÒ»¸ö»òÕßÁ½¸öÃû³Æ¿Õ¼ä²ÎÊý,ÄÇôµ±Ç°µÄÈ«¾ÖºÍ¾Ö²¿Ãû³Æ¿Õ¼ä¾Í±»Ê¹ÓÃ.Èç¹ûÒ»¸öº¯ÊýÌåÄÚǶǶÌ׺¯Êý»òlambdaÄäÃûº¯Êýʱ,ͬʱÓÖÔÚº¯ÊýÖ÷ÌåÖÐʹÓÃexec»òexecfile()º¯Êýʱ£¬ ÓÉÓÚÇ£µ½Ç¶Ì××÷ÓÃÓò£¬»áÒý·¢Ò»¸öSyntaxErrorÒì³£.£¨´Ë¶ÎÔÎÄ:If you omit one or both namespaces, the current values of the global and local namespaces are used. Also,due to issues related to nested scopes, the use of exec or execfile() inside a function body may result in a SyntaxError exception if that function also contains nested function definitions or uses the lambda operator.£©
ÔÚPython2.4Öа³Î´·¢ÏÖ¿ÉÒÔÒýÆðÒì³£
×¢ÒâÀý×ÓÖÐexecÓï¾äµÄÓ÷¨ºÍeval(), execfile()ÊDz»Ò»ÑùµÄ. execÊÇÒ»¸öÓï¾ä(¾ÍÏóprint»òwhile), ¶øeval()ºÍexecfile()ÔòÊÇÄÚ½¨º¯Êý.
exec(str) ÕâÖÖÐÎʽҲ±»½ÓÊÜ£¬µ«ÊÇËüûÓзµ»ØÖµ¡£
µ±Ò»¸ö×Ö·û´®±»exec,eval(),»òexecfile()Ö´ÐÐʱ,½âÊÍÆ÷»áÏȽ«ËüÃDZàÒëΪ×Ö½Ú´úÂ룬ȻºóÔÙÖ´ÐÐ.Õâ¸ö¹ý³Ì±È½ÏºÄʱ,ËùÒÔÈç¹ûÐèÒª¶Ôij¶Î´úÂëÖ´Ðкܶà´Îʱ,×îºÃ»¹ÊǶԸôúÂëÏȽøÐÐÔ¤±àÒë,ÕâÑù¾Í²»ÐèҪÿ´Î¶¼±àÒëÒ»±é´úÂ룬¿ÉÒÔÓÐЧÌá¸ß³ÌÐòµÄÖ´ÐÐЧÂÊ¡£
compile(str ,filename ,kind )º¯Êý½«Ò»¸ö×Ö·û´®±àÒëΪ×Ö½Ú´úÂë, str
Ïà¹ØÎĵµ£º
£¨Ò»£© py2exe¼ò½é
py2exeÊÇÒ»¸ö½«python½Å±¾×ª»»³ÉwindowsÉϵĿɶÀÁ¢Ö´ÐеĿÉÖ´ÐгÌÐò(*.exe)µÄ¹¤¾ß£¬ÕâÑù£¬Äã¾Í¿ÉÒÔ²»ÓÃ×°python¶øÔÚ
windowsϵͳÉÏÔËÐÐÕâ¸ö¿ÉÖ´ÐгÌÐò¡£
¡¡¡¡
¡¡¡¡py2exeÒѾ±»ÓÃÓÚ´´½¨
wxPython,Tkinter,Pmw,PyGTK,pygame,win32com
clientºÍserver,ºÍÆäËüµÄ¶ÀÁ¢³ ......
osÄ£¿éÌṩÁ˶àÊý²Ù×÷ϵͳµÄ¹¦Äܽӿں¯Êý.µ±osÄ£¿é±»µ¼Èëºó,Ëü»á×ÔÊÊÓ¦ÓÚ²»Í¬µÄ²Ù×÷ϵͳƽ̨,Èçposix»òNTϵͳƽ̨,osÄ£¿é»á¸ù¾Ý²»Í¬µÄƽ̨½øÐÐÏàÓ¦µÄ²Ù×÷.±¾½ÚÄÚÈݽ«¶ÔosÄ£¿éÌṩµÄº¯Êý½øÐÐÏêϸµÄ½â¶Á.
1.1 Îļþ²Ù×÷º¯Êý
1.1.1 open()º¯ÊýÌṩ´´½¨¡¢´ò¿ª¡¢ÐÞ¸ÄÎļþµÄ¹¦ÄÜ¡£
Example 1-1. Using the os Module to Rename ......
ÔÚCÓïÑÔÖУ¬ÈýÄ¿ÔËËã¾³£Óõ½£¨cond?a:b£©£¬·Ç³£µÄ¼ò½à£¬¶øÔÚPythonÖв»Ö§³ÖÕâÖÖÓï·¨¡£
µ«ÊÇ£¬¿ÉÒÔÓÃPythonÖÐand orÀ´ÊµÏÖ£¨ÕâÀïÊÇÓÐÏÝÚåµÄ£¬ÏÂÃæ»á½²µ½£©
ÎÒÃÇÀ´¿´ÏÂÃæ¼¸¸ö±í´ïʽ
>>> False
or 1
1
>>> False
or 0
0
>>> True or
0
True
>>> True
and 1
1
>> ......
Python¼òµ¥ÓÖ¹¦ÄÜÇ¿´ó¡£Ëü×¢ÖØµÄÊÇÈçºÎ½â¾öÎÊÌ⣬¶ø²»ÊDZà³ÌÓïÑÔµÄÓï·¨ºÍ½á¹¹¡£ÀíÏëµÄ½Å±¾ÓïÑÔ¡£ÊÊÓÃÓÚ¿ìËÙµÄÓ¦ÓóÌÐò¿ª·¢¡£
PythonÊÇÒ»ÖÖ½âÊÍÐÔÓïÑÔ¡£»¹ÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄÓïÑÔ¡£
ÓÐÁ½ÖÖʹÓÃpythonÔËÐÐÄãµÄ³ÌÐòµÄ·½Ê½£º
ʹÓý»»¥Ê½µÄ´øÌáʾ·ûµÄ½âÊÍÆ÷
ʹ ......
execÓï¾äÓÃÀ´Ö´Ðд¢´æÔÚ×Ö·û´®»òÎļþÖеÄPythonÓï¾ä¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÔÚÔËÐÐʱÉú³ÉÒ»¸ö°üº¬Python´úÂëµÄ×Ö·û´®£¬È»ºóʹÓÃexecÓï¾äÖ´ÐÐÕâЩÓï¾ä¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó¡£
>>> exec 'print "Hello World"'
Hello World
evalÓï¾äÓÃÀ´¼ÆËã´æ´¢ÔÚ×Ö·û´®ÖеÄÓÐЧPython±í´ïʽ¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó¡£
>>> ......