Текст задания:
Дана функция get_kinetic_energy, которая вычисляет кинетическую энергию. В ней ничего изменять не нужно!
Напишите декоратор memorize, который организует механизм кэширования данной функции.
Декоратор должен сохранять информацию о вызове функции в словарь, в котором ключ - это аргументы, с которыми была вызвана функция, а значение - это результат выполнения функции.
Если функция с такими аргументами вызывается впервые, то в словарь добавляется информация об этом вызове.
Если функция с такими аргументами уже вызывалась, то новое значение в словарь не добавляется.
То что смогла написать, но декоратор явно написан неполностью, помогите дописать программу.
Дана функция get_kinetic_energy, которая вычисляет кинетическую энергию. В ней ничего изменять не нужно!
Напишите декоратор memorize, который организует механизм кэширования данной функции.
Декоратор должен сохранять информацию о вызове функции в словарь, в котором ключ - это аргументы, с которыми была вызвана функция, а значение - это результат выполнения функции.
Если функция с такими аргументами вызывается впервые, то в словарь добавляется информация об этом вызове.
Если функция с такими аргументами уже вызывалась, то новое значение в словарь не добавляется.
То что смогла написать, но декоратор явно написан неполностью, помогите дописать программу.
Python:
def memorize(function):
# todo Здесь нужно написать код
pass
[COLOR=rgb(209, 72, 65)]cache = {}
def cache_args(func):
def wrapper(*args, **kwargs):
if args not in cache:
cache[args] = func(*args, **kwargs)
return cache[args]
return wrapper[/COLOR]
# todo Здесь ничего изменять не нужно!
@memorize
def get_kinetic_energy(weight, speed):
"""Кинетическая энергия
aram weight: масса
aram speed: скорость
:return: кинетическую энергию
"""
return (weight * speed ** 2)/2