Створення параметризованих декораторів
Свайпніть щоб показати меню
Коли потрібно, щоб декоратор поводився по-різному залежно від певного вводу, слід створити параметризований декоратор. На відміну від звичайних декораторів, які приймають лише функцію як аргумент, параметризовані декоратори приймають власні аргументи, що дозволяє динамічно керувати їхньою поведінкою. Це особливо корисно, коли потрібно повторно використовувати декоратор у різних ситуаціях із різними налаштуваннями.
Структура параметризованого декоратора:
- Зовнішня функція приймає аргументи декоратора;
- Середня функція — це власне декоратор, який приймає функцію для декорування;
- Внутрішня функція обгортає та контролює виконання оригінальної функції.
Такий багаторівневий підхід дозволяє передавати аргументи декоратору, які потім доступні під час виклику декорованої функції.
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()
1. Чим параметризований декоратор відрізняється від звичайного декоратора?
2. Чому може виникнути потреба передавати аргументи декоратору?
Все було зрозуміло?
Дякуємо за ваш відгук!
Секція 4. Розділ 3
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Секція 4. Розділ 3