python的exec/eval/compile的用法

exec eval compile区别:

exec 执行python代码,无论是存储在对象/文件/字符串内都可执行
eval 执行存储于对象或字符串内的python表达式
compile 对代码预编译,可防止重复编译一段代码

exec

格式:exec obj
代码:

Python
>>> exec '''for i in range(3): ... print i ... ''' 0 1 2
1
2
3
4
5
6
7
>>> exec '''for i in range(3):
...     print i
... '''
0
1
2
 

eval

格式:eval( obj[, globals=globals(), locals=locals()] ) 全局变量和局部变量
代码:

Python
>>> a = 2 >>> eval('a * 5') 10
1
2
3
4
>>> a = 2
>>> eval ( 'a * 5' )
10
 

compile

格式:compile( str, file, type) file代码存放地方 type有三类:eval single配合单一语句exec使用 exec配合exec多语句使用
代码:

Python
# 执行python表达式 >>> eval_code = compile('3 * 4', '', 'eval') >>> eval(eval_code) 12 # 执行python单一语句 >>> single_code = compile('print "hello word!"', '', 'single') >>> exec(single_code) hello word! # 执行python多条语句 >>> exec_code = compile("""for i in range(5): ... print i""", '', 'exec') >>> exec(exec_code) 0 1 2 3 4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 执行python表达式
>>> eval_code = compile ( '3 * 4' , '' , 'eval' )
>>> eval ( eval_code )
12
# 执行python单一语句
>>> single_code = compile ( 'print "hello word!"' , '' , 'single' )
>>> exec ( single_code )
hello word !
# 执行python多条语句
>>> exec_code = compile ( """for i in range(5):
...     print i""" , '' , 'exec' )
>>> exec ( exec_code )
0
1
2
3
4
 



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值