Python保存了一个eval函数

Tor*_*orn 6 python eval python-2.7

假设我有一个函数fun(f, x, y),其中x和y是数字,f是指定函数的字符串,例如"1 / x ** 2 + y".

我希望使用这个功能f很多,比如几百万次,以及每次使用之间的值xy变化.
因此,调用eval(f)需要花费大量时间,而不是每次只计算函数的值.(在我测量的情况下,大约50倍.)

有没有办法保存这个功能,f所以我只需要调用eval一次?

PS.请不要讨论在eval这里使用的(un)安全性,我知道它,但是这个代码不会出现在第三方运行它的任何地方,也不会与我的问题相关.

Jea*_*bre 9

你可以evallambda,所以你只要评估一次,之后,它是一个功能,您可以使用:

s = "1 / x ** 2 + y"

s = "lambda x,y: "+s
f = eval(s)
x = 2
y = 3
print(f(x,y))
Run Code Online (Sandbox Code Playgroud)

我知道了3.25,但是我可以改变x并且y不需要再次评估表达式.