IniziaInizia gratis

Stampa il tipo di ritorno

Stai facendo il debug di un pacchetto su cui stai lavorando con i tuoi amici. Succede qualcosa di strano con i dati restituiti da una delle tue funzioni, ma non sei nemmeno sicuro di quale funzione stia dando problemi. Sai che a volte i bug si infilano nel codice quando ti aspetti che una funzione restituisca una cosa e invece ne restituisce un’altra. Per esempio, se ti aspetti che una funzione restituisca un array di numpy ma restituisce una lista, potresti ottenere comportamenti inattesi. Per assicurarti che non sia questo il problema, decidi di scrivere un decorator, print_return_type(), che stampi il tipo della variabile restituita a ogni chiamata di qualunque funzione venga decorata.

Questo esercizio fa parte del corso

Scrivere funzioni in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Crea una funzione annidata, wrapper(), che diventerà la nuova funzione decorata.
  • Chiama la funzione che stai decorando.
  • Restituisci la nuova funzione decorata.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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}))
Modifica ed esegui il codice