Русский
Открыть в Telegram

Пост Декоратор создаёт новый объект (обычно функцию), используя в качестве аргумента другую единственную функцию. Однако иног…

9 июня 2026
Б
Библиотека Python разработчика | Книги по питону
Декоратор создаёт новый объект (обычно функцию), используя в качестве аргумента другую единственную функцию. Однако иногда хочется задать больше, чем одну функцию. Сделать это напрямую невозможно из-за ограничений синтаксиса Python, но можно использовать небольшой трюк. Возвращаемая функция может содержать ещё один декоратор, который можно повторно применить к дополнительным функциям, добавляя новое поведение. Примерно так работает @property: @property def x(self): return self._x @x.setter def x(self, value): self._x = value Ниже приведён пример того, как можно определить функцию, которая использует дополнительные функции для особых случаев: from functools import wraps def make_case_decorator(func): def case_decorator(*case_decorator_args): def decorator(special_case_func): @wraps(func) def decorated(*args): if case_decorator_args == args: return special_case_func(*args) return func(*args) decorated.case = make_case_decorator(decorated) return decorated return decorator return case_decorator def special_cases(func): @wraps(func) def decorated(*args): return func(*args) decorated.case = make_case_decorator(decorated) return decorated @special_cases def fact(x): return x * fact(x - 1) @fact.case(0) def fact(x): return 1 @fact.case(10) def fact(x): print(f'(сработала оптимизация для {x})') return 3628800 📲 Мы в MAX 👉@BookPython
7 · 1.3K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питону🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv BashББиблиотека Python разработчика | Книги по питонуТы не можешь изменять переменные замыкания простым присваиванием. Python рассматривает присваивание как определение локальной переменной внутри тела функции и в
это сообщение
ББиблиотека Python разработчика | Книги по питонуЕсли вы хотите измерить время между двумя событиями, следует использовать time.monotonic() вместо time.time(). time.monotonic() никогда не идёт назад, даже еслиББиблиотека Python разработчика | Книги по питонуСловари, которые используются для хранения атрибутов объектов, не такие же, как те, что вы создаёте с помощью dict, хотя выглядят они абсолютно одинаково: >>> f
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 943подписчиков725средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем