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

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

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

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

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

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

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

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

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.

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

Decorator one start
Decorator two start
Hello!
Decorator two end
Decorator one end

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

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

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 3.7

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

Свайпніть щоб показати меню

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

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

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

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

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

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

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.

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

Decorator one start
Decorator two start
Hello!
Decorator two end
Decorator one end

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

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

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

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

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

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