Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Створення параметризованих декораторів | Опанування ітераторів та декораторів у Python
Концепції функціонального програмування в Python

bookСтворення параметризованих декораторів

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

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

Структура параметризованого декоратора:

  1. Зовнішня функція приймає аргументи декоратора;
  2. Середня функція — це власне декоратор, який приймає функцію для декорування;
  3. Внутрішня функція обгортає та контролює виконання оригінальної функції.

Такий багаторівневий підхід дозволяє передавати аргументи декоратору, які потім доступні під час виклику декорованої функції.

12345678910111213141516171819202122
# Outer function: accepts the decorator argument 'times' def repeat(times): # The actual decorator that takes the function to be decorated def decorator(func): # Inner function: wraps and controls the execution of 'func' def wrapper(*args, **kwargs): result = None # Call the original function 'times' times for _ in range(times): result = func(*args, **kwargs) return result # Return the wrapper to replace the original function return wrapper # Return the decorator function return decorator # Apply the repeat decorator @repeat(3) def say_hello(): print("Hello!") say_hello()
copy

1. Чим параметризований декоратор відрізняється від звичайного декоратора?

2. Чому може виникнути потреба передавати аргументи декоратору?

question mark

Чим параметризований декоратор відрізняється від звичайного декоратора?

Виберіть правильну відповідь

question mark

Чому може виникнути потреба передавати аргументи декоратору?

Виберіть правильну відповідь

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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