【发布时间】:2020-09-08 21:18:47
【问题描述】:
有没有办法从一个字符串创建一个 python 函数?例如,我将以下表达式作为字符串:
dSdt = "-1* beta * s * i"
我找到了一种标记它的方法:
>>> import re
>>> re.findall(r"(\b\w*[\.]?\w+\b|[\(\)\+\*\-\/])", dSdt)
['-', '1', '*', 'beta', '*', 's', '*', 'i']
现在我想(不知何故 - 这是我不知道的部分)将其转换为具有相同行为的东西:
def dSdt(beta, s, i):
return -1*beta*s*i
我考虑过类似eval(dSdt) 的东西,但我希望它更通用(必须提前知道参数beta、s 和i 存在)。
一些关闭请求已链接到this question,用于评估字符串中的数学表达式。这与这个问题不太一样,因为我正在寻找从该字符串定义一个函数。
【问题讨论】:
-
好问题——你需要一套明确的语法规则——正如@Code-Apprentice 指出的那样,这正是编译器所做的。祝你好运! :)