使用自定義全域性變數用 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) # note that 'c' is not explicitly defined
0