ComeçarComece de graça

Imprimir o tipo de retorno

Você está depurando um pacote no qual tem trabalhado com seus amigos. Algo estranho está acontecendo com os dados retornados de uma de suas funções, mas você não tem certeza de qual função está causando o problema. Você sabe que, às vezes, os bugs podem se infiltrar no seu código quando você espera que uma função retorne uma coisa e ela retorna algo diferente. Por exemplo, se você espera que uma função retorne uma matriz numpy, mas ela retorna uma lista, você pode obter um comportamento inesperado. Para garantir que não é isso que está causando o problema, você decide escrever um decorador, print_return_type(), que imprimirá o tipo da variável que é retornada de cada chamada de qualquer função que esteja decorando.

Este exercício faz parte do curso

Como escrever funções em Python

Ver curso

Instruções do exercício

  • Crie uma função aninhada, wrapper(), que se tornará a nova função decorada.
  • Chame a função que está sendo decorada.
  • Retorna a nova função decorada.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

def print_return_type(func):
  # Define wrapper(), the decorated function
  ____ ____(____, ____):
    # Call the function being decorated
    result = ____(____, ____)
    print('{}() returned type {}'.format(
      func.__name__, type(result)
    ))
    return result
  # Return the decorated function
  return ____
  
@print_return_type
def foo(value):
  return value
  
print(foo(42))
print(foo([1, 2, 3]))
print(foo({'a': 42}))
Editar e executar o código