Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

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±àÒëPython³ÌÐò

£¨Ò»£© py2exe¼ò½é
      py2exeÊÇÒ»¸ö½«python½Å±¾×ª»»³ÉwindowsÉϵĿɶÀÁ¢Ö´ÐеĿÉÖ´ÐгÌÐò(*.exe)µÄ¹¤¾ß£¬ÕâÑù£¬Äã¾Í¿ÉÒÔ²»ÓÃ×°python¶øÔÚ
windowsϵͳÉÏÔËÐÐÕâ¸ö¿ÉÖ´ÐгÌÐò¡£
¡¡¡¡
¡¡¡¡py2exeÒѾ­±»ÓÃÓÚ´´½¨
wxPython,Tkinter,Pmw,PyGTK,pygame,win32com
clientºÍserver,ºÍÆäËüµÄ¶ÀÁ¢³ ......

PythonÖеÄOSÄ£¿é

osÄ£¿éÌṩÁ˶àÊý²Ù×÷ϵͳµÄ¹¦Äܽӿں¯Êý.µ±osÄ£¿é±»µ¼Èëºó,Ëü»á×ÔÊÊÓ¦ÓÚ²»Í¬µÄ²Ù×÷ϵͳƽ̨,Èçposix»òNTϵͳƽ̨,osÄ£¿é»á¸ù¾Ý²»Í¬µÄƽ̨½øÐÐÏàÓ¦µÄ²Ù×÷.±¾½ÚÄÚÈݽ«¶ÔosÄ£¿éÌṩµÄº¯Êý½øÐÐÏêϸµÄ½â¶Á.
1.1 Îļþ²Ù×÷º¯Êý
1.1.1 open()º¯ÊýÌṩ´´½¨¡¢´ò¿ª¡¢ÐÞ¸ÄÎļþµÄ¹¦ÄÜ¡£
Example 1-1. Using the os Module to Rename ......

PythonÈýÄ¿ÔËË㣬and orÏÝÚå

ÔÚ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ѧϰ±Ê¼Ç

Python¼òµ¥ÓÖ¹¦ÄÜÇ¿´ó¡£Ëü×¢ÖØµÄÊÇÈçºÎ½â¾öÎÊÌ⣬¶ø²»ÊDZà³ÌÓïÑÔµÄÓï·¨ºÍ½á¹¹¡£ÀíÏëµÄ½Å±¾ÓïÑÔ¡£ÊÊÓÃÓÚ¿ìËÙµÄÓ¦ÓóÌÐò¿ª·¢¡£
PythonÊÇÒ»ÖÖ½âÊÍÐÔÓïÑÔ¡£»¹ÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄÓïÑÔ¡£
ÓÐÁ½ÖÖʹÓÃpythonÔËÐÐÄãµÄ³ÌÐòµÄ·½Ê½£º
      ʹÓý»»¥Ê½µÄ´øÌáʾ·ûµÄ½âÊÍÆ÷
      ʹ ......

python execºÍeval


execÓï¾äÓÃÀ´Ö´Ðд¢´æÔÚ×Ö·û´®»òÎļþÖеÄPythonÓï¾ä¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÔÚÔËÐÐʱÉú³ÉÒ»¸ö°üº¬Python´úÂëµÄ×Ö·û´®£¬È»ºóʹÓÃexecÓï¾äÖ´ÐÐÕâЩÓï¾ä¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó¡£
>>> exec 'print "Hello World"'
Hello World
evalÓï¾äÓÃÀ´¼ÆËã´æ´¢ÔÚ×Ö·û´®ÖеÄÓÐЧPython±í´ïʽ¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó¡£
>>> ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ