Python使用自定义全局变量使用eval评估表达式

示例

>>> variables = {'a': 6, 'b': 7}
>>> eval('a * b', globals=variables)
42

此外,此代码不能偶然引用外部定义的名称:

>>> eval('variables')
{'a': 6, 'b': 7}
>>> eval('variables', globals=variables)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'variables' is not defined

defaultdict例如,使用可以将未定义的变量设置为零:

>>> from collections import defaultdict
>>> variables = defaultdict(int, {'a': 42})
>>> eval('a * c', globals=variables)  # 请注意,“ c”没有明确定义
0