0Pricing
Python Academy · Урок

Декораторы

Научитесь использовать декораторы для изменения или расширения функций

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

Введение в декораторы

Введение в декораторы

Декораторы — мощная возможность Python, позволяющая изменять поведение функций или методов. Их часто используют для добавления функциональности функциям без изменения их кода.

В этом уроке Вы узнаете, что такое декораторы, как их использовать и как создавать собственные декораторы.

Декораторы — иллюстрация 1

Что такое 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.

Отлично! Перейдём к следующей теме.

Декораторы — иллюстрация 11

Часто задаваемые вопросы

Урок «Декораторы» бесплатный?

Да — полный текст урока «Декораторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Декораторы
  2. Генераторы
  3. Менеджеры контекста (операторы with)
  4. Генераторы списков, множеств и словарей
  5. Итераторы и итерируемые объекты
← Назад к Python Academy