exec
exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子。
exec ‘print "Hello World"‘
输出:Hello World
也可以实现赋值:
a = 1 exec ‘a = 2‘
输出: 2
也可以在表达式后面通过in指定一个dictionary:
dict = { ‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4 } fun = ‘‘‘ print a print b print c print d ‘‘‘ exec fun in dict
输出:1
2
3
4
同时,我们可以再fun里面定义函数,但是函数是不能直接调用的,应该在表达式中作出引用,如下代码所示:
dict = { ‘a‘:1, ‘b‘:2, ‘c‘:3, ‘d‘:4 } func = ‘‘‘ def fun(): return a+b+c+d print fun() #引用函数,如果没有这句引用,下面exec则无法执行 ‘‘‘ exec func in dict
输出:10
eval
eval
通常用来执行一个字符串表达式,并返回表达式的值。
eval(expression[, globals[, locals]])
有三个参数,表达式字符串,globals
变量作用域,locals
变量作用域。 其中第二个和第三个参数是可选的。
如果忽略后面两个参数,则eval
在当前作用域执行。
a = 1 eval(‘a+2‘)
输出:3
如果指定globals
参数:
g = {‘b‘ : 10} eval(‘b*2‘, g)
输出:20
如果指定locals
参数:
g={‘a‘:6,‘b‘:8} l={‘b‘:9,‘c‘:10} eval("a+b+c",g,l)
输出:25
注:以上代码在python2.7.6下运行测试通过
原文:http://www.cnblogs.com/crandy/p/5111504.html