Python (SymPy, SciPy),从字符串创建符号lambda
我一直在努力处理一个方程的文本输入,并将其计算为定积分。我需要一个可以调用的函数,以便传递给 scipy.integrate
。
eq = "x**2"
func = lambda x: eq
func(2)
# outputs:
# x**2
# but if I:
func = lambda x: x**2
func(2)
# outputs:
# 4
5 个回答
2
你需要使用eval来执行eq这个代码,而不是把它当成一个字符串来处理。
eq = "x**2"
func = lambda x: eval(eq)
func(2)
# outputs:
# 4
5
不太确定,但也许你在寻找这个
eq = "x**2"
func = eval("lambda x: " + eq)
注意,如果eq
来自不可信的来源(比如用户输入),使用eval()
是很危险的。