Создание декоратора Memoize на Python с использованием кешаPython

Программы на Python
Ответить
Anonymous
 Создание декоратора Memoize на Python с использованием кеша

Сообщение Anonymous »

Я использую курс Datacamp, чтобы узнать о декораторах, и признаю, что я довольно новичок в теме кэшей.
Что меня затруднило, так это то, что я следую " example» на их курсе, и он выдает ошибку в блокноте Jupyter, хотя она точно такая же, как и на их курсе:

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

def memoize(func):
'''Store the results of the decorated function for fast look up'''
#Store results in a dict that maps arguments to results
cache = {}
#As usual, create the wrapper to create the newly decorated function
def wrapper(*args, **kwargs):
# If these arguments havent been seen before...
if (args, kwargs) not in cache:
#Call func() and store the result.
cache[(args, kwargs)] =func(*args, **kwargs)
#Now we can look them up quickly
return cache[(args, kwargs)]

return wrapper
Я использую декоратор со следующей функцией:

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

@memoize
def slow_function(a,b):
print('Sleeping...')
time.sleep(5)
return a+b

Ошибка нехешируемого типа dict. Если бы кто-нибудь мог объяснить причину этой ошибки, я был бы очень признателен.
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/650 ... sing-cache
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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