有人可以向我解释以下如何工作:
class Memoize:
def __init__(self, f):
self.f = f
self.memo = {}
def __call__(self, *args):
if not args in self.memo:
self.memo[args] = self.f(*args)
return self.memo[args]
然后:
def factorial(k):
if k < 2: return 1
return k * factorial(k - 1)
factorial = Memoize(factorial)
这是取自这个问题。我想了解它是如何self.f(*args)
工作的。args
是位置参数的元组。当我尝试这样做时:
*(1,2,3)
我收到语法错误。我认为这是某种解包操作符或类似的东西。带有元组的星号是独立表示任何东西还是仅存在于函数调用的上下文中?感谢您的任何解释。