In kiểu dữ liệu trả về
Bạn đang gỡ lỗi một package mà bạn đang phát triển cùng bạn bè. Có điều gì đó kỳ lạ xảy ra với dữ liệu được trả về từ một trong các hàm, nhưng bạn còn không chắc hàm nào gây ra rắc rối. Bạn biết rằng đôi khi bug len lỏi vào mã khi bạn kỳ vọng một hàm trả về một kiểu, nhưng nó lại trả về kiểu khác. Ví dụ, nếu bạn mong đợi một hàm trả về một mảng numpy nhưng nó trả về một list, bạn có thể gặp hành vi ngoài ý muốn. Để đảm bảo đây không phải là nguyên nhân, bạn quyết định viết một decorator, print_return_type(), để in ra kiểu của biến được trả về từ mỗi lần gọi bất kỳ hàm nào mà decorator này trang trí.
Bài tập này là một phần của khóa học
Viết hàm trong Python
Hướng dẫn bài tập
- Tạo một hàm lồng nhau,
wrapper(), sẽ trở thành hàm mới sau khi trang trí. - Gọi hàm đang được trang trí.
- Trả về hàm mới sau khi trang trí.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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}))