本文记录一些很有用的但是在关键时刻又容易忘记的工具。
lrucache是定义在functools包当中的装饰器,可以使得函数可以缓存曾经执行的结果。
用法如下:
@functools.lru_cache(maxsize = 128,typed = False) def fib(n): return fib(n - 1) + fib(n - 2) if n > 2 else n
maxsize和typed是可选参数,maxsize制定了可以缓存多少个结果,为了更好的性能,maxsize一般是2的指数。typed如果设置为区别对待不同的参数类型,比如1和1.0,会被认为是不同的。
用法:
itertools.zip_longest(self,other,fillvalue=0.0)
浅负责和深复制,对所有的对象适用,用法如下:
from copy import copy,deepcopy a1 = copy(a) b1 = deepcopy(b)