我需要做一個裝飾器,檢查它的相關函數之前是否調用與它現在調用的參數完全相同的參數。如果是,我需要返回以前的輸出。如果沒有,我打電話並存儲結果以備將來調用。這裏是我的:Python裝飾器,檢查函數是否被調用之前
class memoized(object):
def __init__(self,f):
self.__first=[]
self.__last=[]
self.__f=f
self.__name__=f.__name__
self.__value=[]
def __call__(self,*args,**dargs):
for i in self.__value:
if(self.__first[i]==args and self.__last[i]==dargs):
return self.__value[i]
rv=self.__f(*args,**dargs)
self.__first.append(args)
self.__last.append(dargs)
self.__value.append(rv)
return rv
當我運行它雖然它給了我一個idex錯誤。我不知道爲什麼從理論上講,首先和最後一個值的長度應該一直是相同的,因爲我追加了所有其中的3個。有任何想法嗎?
請將追溯到您的問題。 – zondo
這通常被稱爲* memoization *,看到一個[相關的問題](http://stackoverflow.com/q/1988804) –