x = 0
x2 = 0
f = "numpy.sin(x)"
e1 = eval(f)
e2 = eval(f, {"x":x2})
e2(但不是 e1)的行产生错误:
NameError: name 'numpy' is not defined
为什么?
答案 0 :(得分:1)
因为在 e1 中,您没有覆盖全局变量,numpy 存在。在 e2 中,您是这样的,因此解释器无法看到您的导入。只需将 numpy 作为变量传入即可。
e2 = eval(f, {'numpy': numpy, 'x':x2})
答案 1 :(得分:0)
我通过替换解决了它:
f = "numpy.sin(x)"
与:
f = "__import__('numpy').sin(x)"