Python - exec(表达式,globals = None,locals = None)

时间:2014-02-19 14:16:14

标签: python python-3.x eval standard-library

我理解eval的基本用法,如Python标准库中的示例所示:

x = 1
print(eval('x+1'))
2

有人可以提供一个更简洁的解释,以及使用全局和本地争论的例子。

2 个答案:

答案 0 :(得分:2)

如果指定全局,本地命名空间,则它们用于全局局部变量而不是当前范围。

>>> x = 1
>>> d = {'x': 9}
>>> exec('x += 1; print(x)', d, d) # x => 9 (not 1)
10

注意:字典外的x不受影响。

>>> x
1
>>> d['x']
10

答案 1 :(得分:2)

globalslocals允许您定义eval应该运行的范围,即在尝试评估表达式时应该可以使用哪些变量。例如:

>>> eval("x * 2", {'x': 5, 'y': 6}, {'x': 4})
8

请注意,在本地全局范围内使用x时,会使用本地版本。