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.
Desafio
FácilVocê 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çãoaddusando 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 wrapperExemplo:
Para uma chamada de função add(2, 3), deve ser impresso,
Calling add with arguments (2, 3)
add returned: 5Experimente você mesmo
# Escreva o código aqui
def add(a, b):
return a + bTodas as lições de Decoradores em Python
Pratique por conta própria: Compilador de Python online