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

bookДекоратори з Параметрами

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

Базова структура декоратора

Почнемо з базової структури декоратора:

123456789101112
def simple_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @simple_decorator def say_hello(): print("Hello!") say_hello()
copy

У цьому прикладі simple_decorator - це регулярний декоратор, який змінює поведінку функції say_hello.

Декоратор з параметрами

Тепер давайте створимо декоратор, який приймає параметри:

12345678910111213
def decorator_with_args(arg1, arg2): def decorator(func): def wrapper(*args, **kwargs): print(f"Decorator args: {arg1}, {arg2}") return func(*args, **kwargs) return wrapper return decorator @decorator_with_args("hello", 42) def print_numbers(a, b): print(a + b) print_numbers(10, 5)
copy

У цьому прикладі decorator_with_args - це фабрика декораторів, яка приймає параметри (arg1, arg2) і повертає власне декоратор (decorator). Функція обгортка wrapper - це функція, яка модифікує поведінку обгорнутої функції (print_numbers).

Пояснення

  • Викликається decorator_with_args з аргументами ("hello", 42);
  • Повертає функцію decorator;
  • decorator отримує функцію print_numbers і повертає функцію wrapper;
  • Функція wrapper має доступ як до аргументів функції decorator_with_args, так і до аргументів функції print_numbers.

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

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain how decorators with parameters differ from regular decorators?

Can you show more examples of practical uses for decorators with parameters?

Can you clarify how the arguments are passed through the different layers of the decorator?

bookДекоратори з Параметрами

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

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

Базова структура декоратора

Почнемо з базової структури декоратора:

123456789101112
def simple_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @simple_decorator def say_hello(): print("Hello!") say_hello()
copy

У цьому прикладі simple_decorator - це регулярний декоратор, який змінює поведінку функції say_hello.

Декоратор з параметрами

Тепер давайте створимо декоратор, який приймає параметри:

12345678910111213
def decorator_with_args(arg1, arg2): def decorator(func): def wrapper(*args, **kwargs): print(f"Decorator args: {arg1}, {arg2}") return func(*args, **kwargs) return wrapper return decorator @decorator_with_args("hello", 42) def print_numbers(a, b): print(a + b) print_numbers(10, 5)
copy

У цьому прикладі decorator_with_args - це фабрика декораторів, яка приймає параметри (arg1, arg2) і повертає власне декоратор (decorator). Функція обгортка wrapper - це функція, яка модифікує поведінку обгорнутої функції (print_numbers).

Пояснення

  • Викликається decorator_with_args з аргументами ("hello", 42);
  • Повертає функцію decorator;
  • decorator отримує функцію print_numbers і повертає функцію wrapper;
  • Функція wrapper має доступ як до аргументів функції decorator_with_args, так і до аргументів функції print_numbers.

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

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

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

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

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