Cetak tipe nilai kembalian
Anda sedang men-debug sebuah paket yang Anda kerjakan bersama teman-teman. Ada sesuatu yang aneh pada data yang dikembalikan oleh salah satu fungsi Anda, tetapi Anda bahkan belum yakin fungsi mana yang menyebabkan masalah. Anda tahu bahwa bug kadang dapat menyelinap ketika Anda mengharapkan sebuah fungsi mengembalikan satu jenis nilai, tetapi ternyata mengembalikan jenis yang berbeda. Misalnya, jika Anda mengharapkan fungsi mengembalikan array numpy, tetapi malah mengembalikan list, perilaku yang tidak terduga dapat terjadi. Untuk memastikan hal ini bukan penyebab masalah, Anda memutuskan menulis sebuah dekorator, print_return_type(), yang akan mencetak tipe variabel yang dikembalikan dari setiap pemanggilan fungsi apa pun yang dihias olehnya.
Latihan ini adalah bagian dari kursus
Menulis Function di Python
Petunjuk latihan
- Buat fungsi bersarang,
wrapper(), yang akan menjadi fungsi baru yang didekorasi. - Panggil fungsi yang didekorasi.
- Kembalikan fungsi baru yang didekorasi.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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}))