Menu
CoddyTech

Cách dùng decorator

Bài học 5 trên 12 trong khóa học Trình trang trí trong Python của Coddy.

Trong Python, decorator là một hàm nhận một hàm khác làm đầu vào và mở rộng hành vi của hàm đầu vào mà không sửa đổi trực tiếp code của hàm đó. Decorator là một cách mạnh mẽ để sửa đổi hoặc nâng cao hành vi của các hàm một cách linh hoạt và có thể tái sử dụng.

Đây là một ví dụ về hàm decorator đơn giản:

def my_decorator(func):
    def wrapper():
        print("Before the function is called.")
        func()
        print("After the function is called.")
    return wrapper

Trong ví dụ này, hàm my_decorator nhận một hàm khác là func làm đầu vào và trả về một hàm mới có tên là wrapper.

Hàm wrapper bổ sung một số hành vi trước và sau khi hàm func được gọi.

challenge icon

Thử thách

Dễ

Viết một hàm trang trí có tên debug, nhận một hàm func làm đầu vào và trả về một hàm mới in tên của func cùng giá trị trả về của func mỗi khi hàm đó được gọi.

Để lấy tên của func, hãy dùng func.__name__.

Đây là ví dụ về cách dùng hàm trang trí debug:
 

def hello():
    return "Hello"

debug_hello = debug(hello)
debug_hello()

Trong ví dụ này, chúng ta dùng hàm trang trí debug để bọc hàm hello và tạo một hàm mới có tên debug_hello. Khi gọi debug_hello(), hàm trang trí sẽ in ra:

Calling hello
hello returned: Hello

Bạn có thể giả định rằng tất cả các hàm được truyền cho debug đều không nhận đối số.

Tự làm thử

Tất cả bài học trong Trình trang trí trong Python

Tự luyện tập: Trình biên dịch Python online