用户输入一个函数

1 投票
1 回答
6249 浏览
提问于 2025-04-17 08:14

我正在写一个程序,需要计算用户定义的函数的最大值。不过,如果用户输入一个关于某个变量(比如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 字典来提高安全性,但我觉得还是有一些聪明的代码能够访问到你代码内部的内容。

撰写回答