0Pricing
Python For Kids · Урок

Декораторы

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

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

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

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

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

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

Что такое декоратор

Декоратор — это функция, которая принимает другую функцию в качестве входного значения и возвращает новую функцию с добавленной функциональностью. Его часто используют вместе с синтаксисом @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()

Как работают декораторы

При использовании декоратора Python заменяет исходную функцию функцией-обёрткой, возвращённой декоратором.

# 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()

Использование декораторов с аргументами

Декораторы могут работать с функциями, принимающими аргументы, если использовать *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 есть несколько встроенных декораторов:

  • @staticmethod: определяет статический метод.
  • @classmethod: определяет метод класса.
  • @property: определяет метод-свойство.

Распространённые ошибки при работе с декораторами

Вот несколько ошибок, которых следует избегать:

  • Не сохранять имя и строку документации исходной функции (используйте functools.wraps).
  • Использовать декораторы без необходимости для простых задач.
  • Забывать обрабатывать аргументы в функции-обёртке.

Что мы узнали

В этом уроке Вы узнали:

  • Что такое декораторы и как они работают в Python.
  • Как создавать и использовать обычные декораторы, декораторы с параметрами и цепочки декораторов.
  • Распространённые варианты применения и встроенные декораторы в Python.

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

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

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

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

Да — полный текст урока «Декораторы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python For Kids, подпишись на CoddyKit PRO. Курс Python For Kids содержит 5 уроков всего.

Чему я научусь в уроке «Декораторы»?

Научитесь использовать декораторы для изменения или расширения функций Ты практикуешь Python For Kids с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python For Kids?

Предыдущий опыт не требуется. Python For Kids на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 5.

Сколько времени занимает урок «Декораторы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python For Kids?

Да. Каждый урок Python For Kids включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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