Декораторы
Научитесь использовать декораторы для изменения или расширения функций
«Декораторы» — бесплатный урок Python Academy на CoddyKit. Это урок 1 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 5 уроков всего.
Введение в декораторы
Введение в декораторы
Декораторы — мощная возможность Python, позволяющая изменять поведение функций или методов. Их часто используют для добавления функциональности функциям без изменения их кода.
В этом уроке Вы узнаете, что такое декораторы, как их использовать и как создавать собственные декораторы.

Что такое decorator?
Что такое decorator?
decorator — это функция, которая принимает другую функцию в качестве входных данных и возвращает новую функцию с дополнительной функциональностью. Такой decorator часто используют с синтаксисом @decorator_name.
# Basic example of a decorator
def decorator(func):
def wrapper():
print("Before the function call")
func()
print("After the function call")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()Как работают декораторы
Как работают декораторы
При использовании decorator Python заменяет исходную функцию функцией wrapper, которую возвращает decorator.
# How decorators work
def decorator(func):
def wrapper():
print("Wrapper called")
func()
return wrapper
@decorator
def greet():
print("Greetings!")
print(greet.__name__) # Outputs: wrapper
greet()Использование декораторов с аргументами
Использование декораторов с аргументами
Декораторы могут работать с функциями, принимающими аргументы, если в функции wrapper использовать *args и **kwargs:
# Decorator for functions with arguments
def decorator(func):
def wrapper(*args, **kwargs):
print(f"Arguments: {args}, {kwargs}")
return func(*args, **kwargs)
return wrapper
@decorator
def add(a, b):
return a + b
print(add(3, 5))Цепочка нескольких декораторов
Цепочка нескольких декораторов
Вы можете использовать несколько декораторов для одной функции. Они применяются в том порядке, в котором расположены, — сверху вниз:
# Chaining multiple decorators
def decorator1(func):
def wrapper():
print("Decorator 1")
func()
return wrapper
def decorator2(func):
def wrapper():
print("Decorator 2")
func()
return wrapper
@decorator1
@decorator2
def greet():
print("Hello!")
greet()Создание параметризованных декораторов
Создание параметризованных декораторов
Параметризованные декораторы принимают аргументы и обеспечивают более гибкую функциональность:
# Parameterized decorator
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def say_hello():
print("Hello!")
say_hello()Распространённые случаи использования декораторов
Распространённые случаи использования декораторов
Декораторы часто используют для:
- Журналирования вызовов функций и их аргументов.
- Измерения времени выполнения функций.
- Управления доступом, например проверки разрешений пользователя.
- Кэширования результатов для повышения производительности.
Встроенные декораторы в Python
Встроенные декораторы в Python
Python предоставляет несколько встроенных декораторов, в том числе:
@staticmethod: определяет статический метод.@classmethod: определяет метод класса.@property: определяет метод-свойство.
Распространённые ошибки при работе с декораторами
Распространённые ошибки при работе с декораторами
Вот некоторые ошибки, которых следует избегать:
- Несохранение имени и строки документации исходной функции (используйте
functools.wraps). - Использование декораторов без необходимости для простых задач.
- Забывание об обработке аргументов в функции wrapper.
Что мы узнали
Что мы узнали
В этом уроке вы узнали:
- Что такое декораторы и как они работают в Python.
- Как создавать и использовать обычные, параметризованные декораторы и цепочки декораторов.
- О распространённых случаях использования и встроенных декораторах в Python.
Отлично! Перейдём к следующей теме.

Часто задаваемые вопросы
Урок «Декораторы» бесплатный?
Да — полный текст урока «Декораторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 5 уроков всего.
Чему я научусь в уроке «Декораторы»?
Научитесь использовать декораторы для изменения или расширения функций Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 5.
Сколько времени занимает урок «Декораторы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Декораторы
- Генераторы
- Менеджеры контекста (операторы with)
- Генераторы списков, множеств и словарей
- Итераторы и итерируемые объекты