比方說,我有一個Python函數,其中x
和y
都是比較大的對象(表,NumPy的矩陣等):如何保存值,如果打不捕捉回報
def myfun(x):
y=some complicated function of x
return y
如果在交互式會話的用戶調用此爲:
myfun(5)
電話是基本沒用,因爲y
丟失。我們還假設該函數需要一段時間才能運行。有沒有辦法檢索答案,因此用戶不必重新運行,即answer=myfun(5)
?另外,寫這個函數的好方法(pythonic)是爲了使這個方案「防呆」。一些不太好的選擇是:
需要一個存儲該值的參數,例如,
def myfun(x,y):
y = some complicated function of x
return y
或許:
def myfun(x):
y = some complicated function of x
global temp
temp = y
return y
在後一種情況下,如果用戶再誤稱爲myfun(5)
,還有的y=temp
的選項,得到的答案回來..但使用global
似乎只是錯誤的。
http://stackoverflow.com/questions/1988804/what-is-memoization-and-how-can-i-use-it-in-python – danidee
@danidee good (儘管這個問題可能是過度的) –