python 中的exec

x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""


def func():
    y = 20
    exec(expr)
    exec(expr, {'x': 1, 'y': 2})
    exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})


func()

输出

60
33
34

exec可以运行复杂的语句,但是返回值永远为None,
而eval要执行的Python代码只能是单个运算表达式(注意eval不支持任意形式的赋值操作)
,而不能是复杂的代码逻辑,这一点和lambda表达式比较相似。

posted @ 2019-01-31 14:45  公众号python学习开发  阅读(535)  评论(0编辑  收藏  举报