Объяснение декоратора запоминания в PythonPython

Программы на Python
Anonymous
Объяснение декоратора запоминания в Python

Сообщение Anonymous »

Я смотрю на следующий пример < /p>

Код: Выделить всё

import functools

def memoize(func):
cache = {} # when does this get created, how many different instances?

@functools.wraps(func)  # Preserve function metadata
def wrapper(*args, **kwargs):
key = (args, frozenset(kwargs.items()))  # Create a unique key for the arguments
if key not in cache:
cache[key] = func(*args, **kwargs)
return cache[key]

return wrapper
за мой комментарий внутри кода, мой вопрос о строке cache = {} . Как словарь не получает сброс каждый раз, когда называется украшенная функция? Кроме того, если я применяю @memoize на 2 разных функциях f1 () и f2 () Каждый получает свой собственный кэш словарь? Я полагаю, что это предполагаемое и идеальное поведение, я просто не понимаю, как/почему это работает так.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-python

Вернуться в «Python»