一、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
转载于:https://my.oschina.net/wangfly/blog/262874