分享

python 中eval、exec、execfile、compile的使用

 sven_ 2014-07-17
一、eval 将字符串转换成有效的Python表达式
eval(expression[,globals[,locals]])
(一)expression的一个表达式,可以是:‘1+1’,‘wang’(需定义),‘x+1’(x需定义)
1
print eval ('2+2')、
2
= "zhejiang"
print eval('w')
3
= 1
= 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是一个映射:所谓映射,就是引用的对象有具体值,取所引用对象的值。
= 1
= 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
(三)
= 1
= 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分evalexec两个
1print compile('print "i am good"','','exec')
运行结果:<code object <module> at 00ABCD10file "", line 1>
2eval(compile('print "i am good"','','exec'))
运行结果:i am good
3exec(compile('print "i am good"','','exec'))
运行结果:i am good
4:w = "zhejiang"
print eval(compile('w','','eval'))
运行结果:zhejiang

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多