⚡️ Упрощаем создание декораторов
Помните, мы уже говорили про создание декораторов и классов-декораторов. В этот раз мы поговорим о декораторе, который используется для создания этих самых декораторов.
Для этого мы воспользуемся декоратором
Её задача — выдавать себя за настоящую функцию, которая использует декоратор. То есть, она подменивает значения name и doc на значения реальной функции.
Если мы попытаемся получить имя или документацию функции, использующую декоратор, то мы получим все значения wrapper. Это может сбить некоторые редакторы и программистов с толку, поэтому многие используют
#миниурок #functools #декоратор
Помните, мы уже говорили про создание декораторов и классов-декораторов. В этот раз мы поговорим о декораторе, который используется для создания этих самых декораторов.
Для этого мы воспользуемся декоратором
@wraps
из модуля functools — это упрощение для функции functools.update_wrapper.Её задача — выдавать себя за настоящую функцию, которая использует декоратор. То есть, она подменивает значения name и doc на значения реальной функции.
Если мы попытаемся получить имя или документацию функции, использующую декоратор, то мы получим все значения wrapper. Это может сбить некоторые редакторы и программистов с толку, поэтому многие используют
@wraps
, как на примере выше.#миниурок #functools #декоратор
⚡️ Кэшируем результат работы метода
Кэширование — действительно полезная вещь, если у вас есть тяжёлые математические операции. Оно уменьшает использование процессора, но потребляет ОЗУ.
Декораторы cache и cached_property как раз созданы для этой задачи. Они создают словарь по типу «Входные данные : результат» и сохраняют туда результат работы функции.
cached_property — это то же самое, что и
Если вы пользуетесь версией старее python 3.9, то воспользуйтесь декоратором lru_cache.
Если вам стало интересно, посетите документацию.
#миниурок #cache
Кэширование — действительно полезная вещь, если у вас есть тяжёлые математические операции. Оно уменьшает использование процессора, но потребляет ОЗУ.
Декораторы cache и cached_property как раз созданы для этой задачи. Они создают словарь по типу «Входные данные : результат» и сохраняют туда результат работы функции.
cached_property — это то же самое, что и
@cache @property
. И, поскольку это свойство, используется только в классах.Если вы пользуетесь версией старее python 3.9, то воспользуйтесь декоратором lru_cache.
Если вам стало интересно, посетите документацию.
#миниурок #cache