我试着把头包裹在python装饰器周围,所以我借了这个据称最快的memoization implementation:
class memoize(dict):
def __init__(self, func):
self.func = func
def __call__(self, *args):
return self[args]
def __missing__(self, key):
result = self[key] = self.func(*key)
return result
>>> @memoize
... def foo(a, b):
... return a * b
>>> foo(2, 4)
8
>>> foo
{(2, 4): 8}
一块蛋糕,但后来我才知道functools wraps。医生说:
这是一个便利函数,用于在定义包装函数时调用update_wrapper()作为函数装饰器。它等同于partial(update_wrapper,wrapped = wrapped,assigned = assigned,updated = updated)。
何时使用,何时不使用?任何人都可以告诉我如果我使用上面的class memoization
使用functools.wraps如何更改它?提前谢谢!