Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Послідовність Декораторів | Декоратори
Середній Рівень Python: Аргументи, Генератори та Декоратори
course content

Зміст курсу

Середній Рівень Python: Аргументи, Генератори та Декоратори

Середній Рівень Python: Аргументи, Генератори та Декоратори

1. Пакування та Розпакування
2. Аргументи Функції
3. Функція як Аргумент
4. Область видимості змінних
5. Декоратори

bookПослідовність Декораторів

Застосування декількох декораторів у Python - це потужний інструмент, який дозволяє застосувати до однієї функції декілька декораторів. Кожен декоратор певним чином модифікує або покращує функцію, і вони застосовуються у певному порядку. Ось практичний приклад, який ілюструє використання декількох декораторів:

Два простих декоратори

Спочатку давайте визначимо два простих декоратори:

Послідовність декораторів

Тепер давайте застосуємо ці декоратори до однієї функції:

1234567891011121314151617181920
def decorator_one(func): def wrapper(): print('Decorator one start') func() print('Decorator one end') return wrapper def decorator_two(func): def wrapper(): print('Decorator two start') func() print('Decorator two end') return wrapper @decorator_one @decorator_two def greet(): print("Hello!") greet()
copy

У кожному декораторі є код, який виконується перед переходом до наступного декоратора і після завершення цього декоратора. Це працює пошарово. Вони застосовуються в тому порядку, в якому вони перераховані, зверху вниз. Вихід верхнього декоратора стає входом для наступного. Таке нашарування може додати кілька функцій до початкової функції.

Порядок виконання

Коли викликається greet(), порядок виконання буде таким:

  1. Уdecorator_one виконується перший print;
  2. Всередині decorator_one, у decorator_two виконується перший print;
  3. Нарешті, виконується оригінальна функція greet;
  4. Потім повертаємось назад і завершуємо виконання decorator_two виведенням повідомлення;
  5. Весь код завершується виконанням останнього print у decorator_one.

На виході буде:

Використання декількох - це потужний спосіб розширити поведінку функцій у модульний та читабельний спосіб.

Сподіваємось, наступна задача допоможе вам краще зрозуміти цю тему.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 5. Розділ 5
some-alt