一、 eval 将字符串转换成有效的Python表达式
eval (expression[, globals [, locals ]])
(一)expression的一个表达式,可以是:‘ 1 + 1 ’,‘wang’(需定义),‘x + 1 ’(x需定义)
例 1 :
print eval ( '2+2' )、
例 2 :
w = "zhejiang"
print eval ( 'w' )
例 3 :
x = 1
y = 2
print eval ( 'x+1,y**3' )
(二) globals 是一个字典: globals = { 'x' : 3 , 'y' : 3 }
globals = { 'x' : 3 , 'y' : 3 }
print eval ( 'x+1,y**3' , globals )
(三) locals 是一个映射:所谓映射,就是引用的对象有具体值,取所引用对象的值。
x = 1
y = 2
print eval ( 'x+1,y**3' , locals ())
二、 exec ,将一个字符串编译成字符形式,并执行该表达式
例 1 :
exec ( 'print "i am good"' )
例 2 :
globals = { 'x' : 3 , 'y' : 3 }
exec ( 'print x+2+y*3' ) in globals
三、 execfile ,执行一个文件
execfile (filename[, globals [, locals ]])
(一) execfile (r 'C:\Documents and Settings\Administrator\b.py' )
文件b.py中的内容: print eval ( '2+1' ),运行结果是: 3
(window下用原始字符串,所以加r)
(二)
globals = { 'x' : 3 , 'y' : 3 }
execfile (r 'C:\Documents and Settings\Administrator\b.py' , globals )
文件b.py中的内容: print eval ( 'x+y' ),运行结果是: 6
(三)
x = 1
y = 2
execfile (r 'C:\Documents and Settings\Administrator\b.py' , locals ())
文件b.py中的内容: print eval ( 'x+y' ),运行结果是: 3
四、 compile 编译字符串或一个文件
compile (source,filename,mode)
source就是一个字符串
filename就是一个文件(地址)
mode分 eval 和 exec 两个
例 1 : print compile ( 'print "i am good"' ,' ',' exec ')
运行结果:<code object <module> at 00ABCD10 , file "", line 1 >
例 2 : eval ( compile ( 'print "i am good"' ,' ',' exec '))
运行结果:i am good
例 3 : exec ( compile ( 'print "i am good"' ,' ',' exec '))
运行结果:i am good
例 4 :w = "zhejiang"
print eval ( compile ( 'w' ,' ',' eval '))
运行结果:zhejiang
|