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表达式比较相似。