說我有修改列表參數和memoizer裝飾功能的功能,如:的Python memoization的那些修改可變參數
@memoizer
def add_1_to_list(list):
for i in range(len(list)):
list[i] += 1
return list
在我的主程序,我有
list = [1, 1, 1, 1]
add_1_to_list(list)
print list
如果我的memoizer類只緩存返回值並將add_1_to_list設置爲返回相同的值,那麼當我第一次運行主程序時,它將打印[2, 2, 2, 2]
,而第二次它將打印[1, 1, 1, 1]
,因爲列表是可變的。
是否有任何解決方案可以讓memoizer類檢測到函數修改了一個參數,這樣我們可以記下它並保存修改的參數?通過在memoizer類中調用它之前和之後打印參數,我可以直觀地看到它,但不知道參數是什麼類型以及它們是否可變/不可變,似乎很難測試參數是否已被修改。
我實際上會將它們保存到一個文件中,而不是讓它們繼續保存在程序中,但是您所說的內容很有意義。 – mlstudent