Aan de slagGa gratis aan de slag

Print het returntype

Je bent een pakket aan het debuggen waar je samen met vrienden aan werkt. Er gebeurt iets geks met de data die wordt teruggegeven door een van je functies, maar je weet niet eens zeker welke functie het probleem veroorzaakt. Je weet dat er soms bugs in je code kunnen sluipen wanneer je verwacht dat een functie het één teruggeeft, maar iets anders terugkomt. Als je bijvoorbeeld verwacht dat een functie een numpy-array teruggeeft, maar je krijgt een lijst, dan kan dat onverwacht gedrag veroorzaken. Om zeker te weten dat dit niet de oorzaak is, besluit je een decorator te schrijven, print_return_type(), die het type print van de variabele die wordt teruggegeven bij elke aanroep van welke functie dan ook die hij decoreert.

Deze oefening maakt deel uit van de cursus

Functies schrijven in Python

Cursus bekijken

Oefeninstructies

  • Maak een geneste functie, wrapper(), die de nieuwe gedecoreerde functie wordt.
  • Roep de functie aan die wordt gedecoreerd.
  • Geef de nieuwe gedecoreerde functie terug.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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}))
Code bewerken en uitvoeren