Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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}))
Chỉnh sửa và Chạy Mã