Курс Python → lru_cache оптимизация функций
Модуль functools в Python предоставляет декоратор @lru_cache(), который позволяет кэшировать результаты вызовов функции. Это означает, что при повторном вызове функции с теми же аргументами, результат будет возвращен из кэша, а не пересчитываться заново. Такой механизм может значительно ускорить выполнение программы и сэкономить ресурсы.
Пример использования декоратора @lru_cache() может выглядеть следующим образом:
from functools import lru_cache
@lru_cache()
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
result = fibonacci(10)
print(result)
В этом примере функция fibonacci() вычисляет значение числа Фибоначчи для заданного номера n. Благодаря декоратору @lru_cache(), результаты для различных значений n будут кэшироваться, что позволит избежать повторных вычислений и ускорит выполнение программы.
Важно помнить, что использование декоратора @lru_cache() имеет смысл только для функций с детерминированным поведением, то есть функций, которые всегда возвращают одинаковый результат для одинаковых входных данных. Для функций с побочными эффектами или изменяемым состоянием кэширование может привести к нежелательным результатам.
Таким образом, декоратор @lru_cache() из модуля functools предоставляет удобный способ оптимизации выполнения функций с повторяющимися вызовами. Правильное использование кэширования может значительно улучшить производительность программы, особенно при работе с дорогостоящими вычислениями или операциями ввода/вывода.
Другие уроки курса "Python"
- Оператор is в Python
- Python и Монти Пайтон
- Python defaultdict добавление ключа
- Документирование функций в Python
- Работа с утверждениями в Python
- Управление контекстом выполнения кода
- Динамические маршруты во Flask
- Структуры данных в Python
- Сглаживание списка
- Нан-рефлексивность в Python
- Хеширование паролей с использованием salt
- Библиотека Chartify: руководство
- Оператор += в Python
- Создание циклической ссылки
- Модуль math: основные функции
- Просмотр внешних файлов в %pycat
- Метод get для словарей
- Метод setdefault() в Python
- Работа с комплексными числами
- Добавление элементов в список
- Оптимизация интернирования строк
- Генерация ключей RSA
- Переменная с нижним подчеркиванием
- Путь к интерпретатору Python
- Экспорт внешнего файла с помощью writefile
- Блок try…finally в Python
- Создание пустых функций и классов в Python
- Модуль itertools: эффективная работа с итераторами
- Применение функции к списку
- OrderedDict — упорядоченный словарь
- Метод __imod__ для Python
- Регулярные выражения в Python
- Python и Юникод: работа с цифрами
- Проверка запуска скрипта или импорта модуля
- Lambda-функция в Python: использование с map() и sum()
- Работа с файлами в Python
- Курсы Яндекс Практикум
- Печать комбинаций в Python с Itertools
- Обработка StopIteration в Python
- Именование переменных в Python
- Обработка исключений в Python
- Работа с индексами списков
- Особенности ключей словаря в Python
- Форматирование строк в Python
- Основы работы со списками















