我理解eval的基本用法,如Python标准库中的示例所示:
x = 1
print(eval('x+1'))
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)
globals
和locals
允许您定义eval
应该运行的范围,即在尝试评估表达式时应该可以使用哪些变量。例如:
>>> eval("x * 2", {'x': 5, 'y': 6}, {'x': 4})
8
请注意,在本地和全局范围内使用x
时,会使用本地版本。