Ký hiệu @ được dùng để định nghĩa decorator trong Python. Decorator cung cấp cú pháp đơn giản để gọi higher-order function. Theo định nghĩa, decorator là một hàm nhận một hàm khác và mở rộng hành vi của hàm sau đó mà không sửa đổi nó một cách rõ ràng.
Chúng ta có hai loại decorator khác nhau trong Python:
- Function decorators (Decorator hàm)
- Class decorators (Decorator lớp)
Một decorator trong Python là bất kỳ đối tượng callable nào được dùng để sửa đổi một hàm hoặc một lớp. Một tham chiếu đến hàm hoặc lớp được truyền cho decorator và decorator trả về hàm hoặc lớp đã sửa đổi. Các hàm hoặc lớp đã sửa đổi thường chứa lời gọi đến hàm gốc.
@decorator
def f(argument):
...
sẽ thay thế f bằng decorator(f): gọi f(argument) lúc này tương đương với decorator(f)(argument).