Sobes.tech
Back to questions
Junior — Middle
73

Как реализовать функцию-декоратор, которая сохраняет результат выполнения другой функции для повторных вызовов с одинаковыми аргументами?

Answer from AI

sobes.tech AI

В Python можно реализовать декоратор, который кэширует результаты вызова функции для повторных вызовов с одинаковыми аргументами. Это называется мемоизацией.

Пример простого декоратора:

def memoize(func):
    cache = {}
    def wrapper(*args):
        if args in cache:
            return cache[args]
        result = func(*args)
        cache[args] = result
        return result
    return wrapper

@memoize
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))  # Вычисляется один раз, затем результат берется из кэша

Такой декоратор сохраняет результаты вызовов функции с определёнными аргументами и возвращает сохранённый результат при повторных вызовах, что повышает эффективность.