调用 eval() 时出现“NameError: name 'numpy' is not defined”

时间:2021-01-17 21:58:47

标签: python numpy eval

x = 0
x2 = 0
f = "numpy.sin(x)"
e1 = eval(f)
e2 = eval(f, {"x":x2})

e2(但不是 e1)的行产生错误:

NameError: name 'numpy' is not defined

为什么?

2 个答案:

答案 0 :(得分:1)

因为在 e1 中,您没有覆盖全局变量,numpy 存在。在 e2 中,您是这样的,因此解释器无法看到您的导入。只需将 numpy 作为变量传入即可。

e2 = eval(f, {'numpy': numpy, 'x':x2})

答案 1 :(得分:0)

我通过替换解决了它:

f = "numpy.sin(x)"

与:

f = "__import__('numpy').sin(x)"