Cú pháp Python
Bài học 6 trên 12 trong khóa học Trình trang trí trong Python của Coddy.
Trong bài học trước, chúng ta đã tìm hiểu cách tạo hàm trang trí, nhưng Python cung cấp một cách thanh lịch hơn nhiều để thực hiện chức năng này bằng ký hiệu @.
Ví dụ:
def my_decorator(func):
def wrapper():
print("Before function is called.")
func()
print("After function is called.")
return wrapper
@my_decorator
def my_function():
print("Inside my_function.")Khi chạy my_function(), bạn sẽ thấy kết quả như sau:
Before function is called.
Inside my_function.
After function is called.Điều này cho thấy hàm trang trí my_decorator có thể thay đổi cách hoạt động của my_function bằng cách thêm một đoạn code trước và sau khi hàm được gọi.
Thử thách
DễBạn được cung cấp code cho hàm add.
Nhiệm vụ của bạn là viết hàm trang trí có tên debug, như trong bài học trước, nhưng có thêm một số điểm sau:
- Gắn hàm trang trí
debugvàoaddbằng ký hiệu@. - Hàm debug cần hỗ trợ các đối số của hàm.
Để hỗ trợ hàm có đối số trong hàm trang trí,
def my_decorator(func):
def wrapper(a, b):
print("Before function is called.")
func(a, b)
print("After function is called.")
return wrapperVí dụ:
Khi gọi hàm add(2, 3), kết quả cần in ra là,
Calling add with arguments (2, 3)
add returned: 5Tự làm thử
# Viết code ở đây
def add(a, b):
return a + bTấ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