В стандартной библиотеке Python есть множество замечательных модулей, которые помогают делать ваш код чище и проще, и functools
определенно является одним из них. В этом модуле есть множество полезных функций высшего порядка, которые можно использовать для кэширования, перегрузки, создания декораторов и в целом для того, чтобы делать код более функциональным, поэтому давайте отправимся на экскурсию по этому модулю и посмотрим, что он может нам предложить.
Кэширование
Давайте начнем с самых простых, но довольно мощных функций модуля functools
. Начнем с функций кэширования (а также декораторов) - lru_cache
, cache
и cached_property
. Первая из них - lru_cache
предоставляет кэш последних результатов выполнения функций, или другими словами, запоминает результат их работы: