Menu
Coddy logo textTech

Python Syntax

Lição 6 de 12 do curso Decoradores em Python da Coddy.

Na lição anterior, vimos como criar decoradores de função, no entanto, o Python oferece uma maneira muito mais elegante de obter essa funcionalidade usando o símbolo @.

Por exemplo,

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.")

Quando executamos my_function(), veremos uma saída como esta:

Before function is called.
Inside my_function.
After function is called.

Isso mostra que a função decoradora my_decorator foi capaz de modificar o comportamento de my_function adicionando algum código extra antes e depois de ser chamada.

challenge icon

Desafio

Fácil

Você recebeu o código de uma função add.

Sua tarefa é escrever um decorador de função chamado debug, como na última lição, mas com algumas adições:

  • Anexe o decorador de função debug à função add usando o símbolo @.
  • A função debug deve suportar argumentos de função.

Para suportar uma função com argumentos em um decorador,

def my_decorator(func):
    def wrapper(a, b):
        print("Before function is called.")
        func(a, b)
        print("After function is called.")
    return wrapper

Exemplo:

Para uma chamada de função add(2, 3), deve ser impresso,

Calling add with arguments (2, 3)
add returned: 5

Experimente você mesmo

# Escreva o código aqui


def add(a, b):
    return a + b

Todas as lições de Decoradores em Python

Pratique por conta própria: Compilador de Python online