python的pickle是用來序列化對象很方便的工具,但是pickle對傳入對象的要求是不能是內部類,也不能是lambda函數。
比如嘗試pickle這個內部類:
結果會報錯AttributeError: Can't pickle local object
。
這個問題可以用第三方庫dill來解決: (https://pypi.org/project/dill/)
結果:
dill除了可以處理pickle可以處理的標准類型外:
嗯,還是很好用的。
(另外python內建庫shelve也是用的pickle做后端,所以默認也是不能處理內部類和lambda函數的。)
進一步參考:
https://medium.com/@emlynoregan/serialising-all-the-functions-in-python-cd880a63b591