将字符串转换为 Python 中的代数表达式

Convert String to Algebraic Expression in Python

我有一个简单的微分函数

def differentiate(func, num) -> float:
    x = num
    h = 0.000000001
    der = (func(x+h)-func(x))/h
    return round(der,4)

print(differentiate(lambda x: x+5,10))

这给出了 1.0 的预期输出,但我想使 func 参数只需要表达式为字符串形式。例如:

print(differentiate('x+5', 10))

这可以吗?最好不用模块的帮助。

这取决于 x 是否始终是您的变量。如果是这种情况,那么您可以使用 python 的 eval 函数来解析您的字符串并将其评估为 python 表达式:

def differentiate(func_x, num) -> float:
   x = num
   h = 0.000000001
   func = lambda x: eval(func_x)
   der = (func(x+h)-func(x))/h
   return round(der,4)
print(differentiate('x+5', 10))
>>> 1.0

编辑: 正如下面 Serge Ballesta 所指出的,eval 函数可能存在安全问题,因为它允许在 运行 时间不受控制地执行,即它将执行输入中给定的任何代码,因此请仅在您可以信任的情况下使用它你函数的输入。