Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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


Ïà¹ØÎĵµ£º

python enumerateÓ÷¨

python cookbook  
Recipe 2.5. Counting Lines in a File
£¬
     ½ñÈÕ·¢ÏÖÒ»¸öк¯Êý
enumerate
¡£Ò»°ãÇé¿ö϶ÔÒ»¸öÁбí»òÊý×é¼ÈÒª±éÀúË÷ÒýÓÖÒª±éÀúÔªËØÊ±£¬»áÕâÑùд£º

for
i
in
range
(0
,
len
(list
)):

 &n ......

¹ØÓÚPythonÖк¯ÊýÖØÔØÎÊÌâµÄ˼¿¼

È«ÎÄÀ´×Ô£ºIT¹¤³Ì¼¼ÊõÍø http://www.systhinker.com/html/91/n-11591.html
×òÌìºÍ·ÉÌìÎèÕßÌÖÂÛ¾²Ì¬ÀàÐÍÓïÑԺͶ¯Ì¬ÀàÐÍÓïÑÔÓÅÁӱȽϵÄʱºò£¬Ëµµ½PythonûÓÐÖØÔØ»úÖÆµÄÎÊÌâ¡£
ºóÀ´ÏëÏëͦÓÐÒâ˼µÄ£¬°Ñ˼¿¼µÄ¾­¹ý¼Ç¼ÏÂÀ´£¬»¶Ó­ÅÄש¡£
ÖØÔØ£¨overload£©ºÍ¸²¸Ç£¨override£©£¬ÔÚC++£¬Java£¬C#µÈ¾²Ì¬ÀàÐÍÓïÑÔÀàÐÍÓïÑÔÖУ¬ÕâÁ½¸ö ......

ÓÃpy2exe±àÒëPython³ÌÐò

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

PythonÄÚ²¿µÄÏß³ÌʵÏÖ

ÔÚPythonÖеÄÏß³ÌÔËÐÐʵ¼ÊÊÇÊܵ½InterpreterµÄ¿ØÖÆ»òÕßËµÇ£ÖÆµÄ¡£ÔÚInterpreterµÄºËÐĺ¯Êý
PyObject * PyEval_EvalFrameEx
(PyFrameObject *f, int
throwflag)
ÎÒÃÇ¿ÉÒÔ¿´µ½ÓÐÒ»¸öÈ«¾Ö±äÁ¿_Py_TickerÀ´¿ØÖÆ×ÅÏ̶߳ÔInterpreterµÄÕ¼Óеģ¬Ä¬ÈÏÊÇInterpreterÿִÐÐÒ»°ÙÌõÖ¸Áî¾Í»áÊÍ·ÅÁíÒ»¸öÈ«¾Ö±äÁ¿interpreter_lock.
......

ʹÓÃCÓïÑÔÀ©Õ¹Python(¶þ)

ÔÚÉÏһƪÖÐÎÒÃÇÒѾ­Ê¹ÓÃcÓïÑÔʵÏÖÁËÒ»¸ö×î¼òµ¥µÄÀ©Õ¹Ä£¿é£¬ÕâһƪÖн«ÔÚÆä»ù´¡ÉϽøÐй¦Äܵķḻ¡£Ê×ÏÈÀ´¿¼ÂÇÈçºÎ´ÓÍⲿµÄPythonÏòCÄ£¿é´«µÝ½ø²ÎÊý£¬foo_bar2չʾÁËÈçºÎÏòCÄ£¿é´«µÝÕûÊý£¬¸¡µãÊý£¬×Ö·û´®Èý¸ö²ÎÊý£¬ÆäÖÐ"ids"Ö¸Ã÷ÁË´«Èë²ÎÊýµÄÊý¾ÝÀàÐÍ¡£PyArg_ParseTuple¸ºÔð¶Ôargs½øÐнâÎö£¬Èô½âÎöʧ°ÜÔò·µ»Ø0.´úÂë#include&n ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ