Menu
Coddy logo textTech

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, добавив дополнительный код до и после её вызова.

challenge icon

Задание

Легко

Вам дан код функции 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