Надрукуйте тип значення, що повертається
Ви налагоджуєте пакет, над яким працювали разом із колегами. Із даними, які повертає одна з ваших функцій, відбувається щось дивне, але ви навіть не певні, яка саме функція спричиняє проблему. Ви знаєте, що помилки інколи прослизають у код, коли ви очікуєте, що функція поверне одне, а вона повертає інше. Наприклад, якщо ви очікуєте, що функція поверне масив numpy, а вона повертає список, це може призвести до неочікуваної поведінки. Щоб упевнитися, що справа не в цьому, ви вирішуєте написати декоратор print_return_type(), який друкуватиме тип змінної, що повертається під час кожного виклику будь-якої функції, яку він декорує.
Ця вправа є частиною курсу
Написання функцій у Python
Інструкції до вправи
- Створіть вкладену функцію
wrapper(), яка стане новою декорованою функцією. - Викличте функцію, яку декоруєте.
- Поверніть нову декоровану функцію.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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}))