誰かが私に以下の仕組みを説明してもらえますか:
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)
構文エラーが発生します。私はそれがある種のアンパック演算子かそのようなものだと思った。タプルのアスタリスクは独立して何かを意味しますか、それとも関数呼び出しのコンテキストでのみ存在しますか? 説明ありがとうございます。