Python(SymPy,SciPy),从字符串创建符号lambda

Non*_*biz 3 python lambda integral scipy

我一直在努力获取方程的文本输入并将其评估为一个明确的积分.我需要一个可调用的函数来传递给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
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 5

不确定,但也许你在寻找

eq = "x**2"
func = eval("lambda x: " + eq)
Run Code Online (Sandbox Code Playgroud)

请注意,eval()如果eq来自不受信任的来源(例如用户输入),则使用是危险的.

  • 这篇文章解释了如何使用`eval`安全地处理用户输入:http://lybniz2.sourceforge.net/safeeval.html (3认同)