Wie kann ich den Memoisierungsdekorator ändern, der für Python-Generatoren funktioniert? Mir ist klar, dass ich es irgendwann im Speicher speichern muss, aber ich möchte dies im Dekorator erledigen und die ursprüngliche Funktion nicht ändern.
Der aktuelle Code von Die Memoisierungsfunktion lautet:
Code: Select all
def memoized(f):
# Warning: Doesn't work if f yields values
cache={}
def ret(*args):
if args in cache:
return cache[args]
else:
answer=f(*args)
cache[args]=answer
return answer
return ret