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

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值