用户输入一个函数
我正在写一个程序,需要计算用户定义的函数的最大值。不过,如果用户输入一个关于某个变量(比如x)的函数,
input = x**2 + 2*x + 1
我(很自然地)会遇到一个错误,因为x没有被定义。
有没有人知道有什么好的方法,让用户可以输入一个关于单个变量(比如x)的函数呢?
1 个回答
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
字典来提高安全性,但我觉得还是有一些聪明的代码能够访问到你代码内部的内容。