6
说我有一个函数fun(f, x, y)
其中x和y是数字,f是一个字符串,指定一个函数,如"1/x ** 2 + y"
。Python保存评估函数
我希望使用这个函数f
很多,说几百万次,并且值的x
和y
在每次使用之间改变。
因此调用eval(f)
需要大量的时间,而不是每次只计算函数的值。 (在我测量的情况下约为50x。)
有什么办法可以保存这个功能f
这样我只需要拨打eval
一次?
PS。请不要在这里讨论使用eval
的(un)安全性,我意识到这一点,但是这个代码不会在第三方运行它的任何地方,也不会与我的问题相关。
为什么你需要将函数存储为字符串? –
它将由用户输入。 – Torn
另一种方法是将表达式编译为代码对象(https://docs.python.org/3/library/functions.html#compile),但Jean-François的技术几乎快两倍。 –