0Pricing
Learn AI with Python · Урок

Декораторы

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

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

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

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

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

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

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

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

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

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

Декораторы могут работать с функциями, принимающими аргументы, если использовать *args и **kwargs в функции wrapper:

# 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) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 5 уроков всего.

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

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

Нужен ли мне опыт, чтобы начать Learn AI with Python?

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

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

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

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

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

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

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