Загружаем изображение…

✨ Магия Python: Как работают декораторы?



Вы постоянно видите их в коде: @bot.message_handler, @app.route, @staticmethod. Но что на самом деле делает этот символ @?

В Python функции - это объекты. Их можно передавать в другие функции, как обычные переменные.

Декоратор - это просто функция, которая принимает другую функцию, "обертывает" её в дополнительный код и возвращает обратно.

Представьте, что у вас есть подарок (функция). Декоратор - это упаковочная бумага. Подарок внутри тот же, но теперь он выглядит и ведет себя немного иначе.

Пример: Декоратор-логгер
Допустим, мы хотим автоматически писать в консоль, когда функция запустилась и когда завершилась.

def my_logger(func):
def wrapper():
print("📢 Запускаю функцию...")
func() # Вызываем оригинальную функцию
print("✅ Функция отработала!")
return wrapper

# Применяем декоратор
@my_logger
def say_hello():
print("Привет, мир!")

# Вызываем
say_hello()


Результат в консоли:

📢 Запускаю функцию...
Привет, мир!

✅ Функция отработала!

🤯 Что происходит под капотом?
Синтаксис с @ - это просто "сахар" (упрощение). На самом деле Python делает вот это:

# Это:
@my_logger
def say_hello(): ...

# Равносильно этому:
def say_hello(): ...
say_hello = my_logger(say_hello)


А как это работает в ботах (@dp.message)?

В библиотеках типа aiogram декораторы часто используются для регистрации.
Когда вы пишете @dp.message(), декоратор не меняет код вашей функции, а сообщает Диспетчеру: "Эй, запомни эту функцию! Если придет сообщение, нужно запустить именно её".

Итог: Декораторы нужны, чтобы добавить логику вокруг функции (проверка прав доступа, замер скорости, логирование), не меняя её код внутри.

Ставь ❤️, если магия рассеялась и стало понятнее!

Подписывайтесь на канал 👉 @python_of
Просмотры: 7 704
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти