我正在编写一个涉及计算用户定义函数最大值的程序,但是如果用户根据x等变量输入函数,即
input = x**2 + 2*x + 1
我(相当期待)因为未定义x而得到错误。
是否有人知道允许用户根据单个变量(如x)输入函数的有效方法?
答案 0 :(得分:2)
如果您不太担心安全性,最简单的解决方案是eval
表达式,例如。
def calculate(value, function):
x = value
return eval(function)
print calculate(2, "x**2 + 2*x + 1")
print calculate(2, "x**3 - x**2 + 1")
输出:
9
5
你可以通过传递一个空的builtin
字典使其更安全,但我仍然认为一些聪明的代码将能够访问你代码的内部。