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的技術幾乎快兩倍。 –