将带有导入模块函数的表达式传递给 eval() 时出错
Error passing to eval() an expression with a function from an imported module
我对 Python 比较陌生,但我对这个问题感到困惑。谁能帮帮我?
我已经定义了一个函数来绘制一个数学函数,其表达式作为字符串传递:
def plot_function(str_function,a,b):
import matplotlib.pyplot as plt
import numpy as np
f = lambda x: eval(str_function)
x=np.linspace(a,b,200)
y=f(x)
plt.plot(x,y)
plt.show()
通过以下方式调用它效果很好:
plot_function('2*x',-10,10)
但它会产生错误 name "np" is not defined
通过以下方式调用它:
plot_function('np.sin(x)',-10,10)
谁能解释一下原因?谢谢
eval 内置函数给出两个这样的参数
eval(expression, [globals[, locals]])
如果第二个参数不存在默认值设置为全局并且你在本地函数中将numpy import定义为np那么np在全局中不存在
我对 Python 比较陌生,但我对这个问题感到困惑。谁能帮帮我?
我已经定义了一个函数来绘制一个数学函数,其表达式作为字符串传递:
def plot_function(str_function,a,b):
import matplotlib.pyplot as plt
import numpy as np
f = lambda x: eval(str_function)
x=np.linspace(a,b,200)
y=f(x)
plt.plot(x,y)
plt.show()
通过以下方式调用它效果很好:
plot_function('2*x',-10,10)
但它会产生错误 name "np" is not defined
通过以下方式调用它:
plot_function('np.sin(x)',-10,10)
谁能解释一下原因?谢谢
eval 内置函数给出两个这样的参数
eval(expression, [globals[, locals]])
如果第二个参数不存在默认值设置为全局并且你在本地函数中将numpy import定义为np那么np在全局中不存在