码迷,mamicode.com
首页 > 编程语言 > 详细

python的exec、eval详解

时间:2016-01-07 23:00:44      阅读:585      评论:0      收藏:0      [点我收藏+]

标签:

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下运行测试通过

 

python的exec、eval详解

标签:

原文地址:http://www.cnblogs.com/crandy/p/5111504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!