Tor*_*orn 6 python eval python-2.7
假设我有一个函数fun(f, x, y),其中x和y是数字,f是指定函数的字符串,例如"1 / x ** 2 + y".
我希望使用这个功能f很多,比如几百万次,以及每次使用之间的值x和y变化.
因此,调用eval(f)需要花费大量时间,而不是每次只计算函数的值.(在我测量的情况下,大约50倍.)
有没有办法保存这个功能,f所以我只需要调用eval一次?
PS.请不要讨论在eval这里使用的(un)安全性,我知道它,但是这个代码不会出现在第三方运行它的任何地方,也不会与我的问题相关.
你可以eval在lambda,所以你只要评估一次,之后,它是一个功能,您可以使用:
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不需要再次评估表达式.
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |