Python Syntax
Урок 6 из 12 курса Декораторы в Python на Coddy.
В предыдущем уроке мы узнали, как создавать декораторы функций, однако Python предоставляет гораздо более элегантный способ реализации этой функциональности с помощью символа @.
Например,
def my_decorator(func):
def wrapper():
print("Before function is called.")
func()
print("After function is called.")
return wrapper
@my_decorator
def my_function():
print("Inside my_function.")При запуске my_function() мы увидим следующий вывод:
Before function is called.
Inside my_function.
After function is called.Это показывает, что функция-декоратор my_decorator смогла изменить поведение my_function, добавив дополнительный код до и после её вызова.
Задание
ЛегкоВам дан код функции add.
Ваша задача — написать декоратор функции с именем debug, как в прошлом уроке, но с некоторыми дополнениями:
- Примените декоратор функции
debugкadd, используя символ@. - Функция debug должна поддерживать аргументы функции.
Чтобы декоратор поддерживал функцию с аргументами, используйте следующую структуру:
def my_decorator(func):
def wrapper(a, b):
print("Before function is called.")
func(a, b)
print("After function is called.")
return wrapperПример:
Для вызова функции add(2, 3) должно быть напечатано:
Calling add with arguments (2, 3)
add returned: 5Попробуйте сами
# Напишите код здесь
def add(a, b):
return a + bВсе уроки раздела Декораторы в Python
Потренируйтесь самостоятельно: Онлайн-компилятор Python