สัญลักษณ์ @ ใช้เพื่อกำหนด Decorator ใน Python Decorators ให้ไวยากรณ์ที่เรียบง่ายสำหรับการเรียก Higher-Order Functions ตามนิยาม Decorator คือฟังก์ชันที่รับฟังก์ชันอีกตัวหนึ่งและขยายพฤติกรรมของฟังก์ชันหลังโดยไม่แก้ไขมันโดยตรง
เรามี 2 ประเภทของ Decorators ใน Python:
- Function Decorators
- Class Decorators
Decorator ใน Python คือ Callable Python Object ใดๆ ที่ใช้แก้ไขฟังก์ชันหรือคลาส ส่ง Reference ของฟังก์ชันหรือคลาสให้ Decorator และ Decorator จะคืนค่าฟังก์ชันหรือคลาสที่แก้ไขแล้ว ฟังก์ชันหรือคลาสที่แก้ไขแล้วมักจะมีการเรียกฟังก์ชันต้นฉบับ
@decorator
def f(argument):
...
# จะแทนที่ f ด้วย decorator(f):
# การเรียก f(argument) จึงเทียบเท่ากับ decorator(f)(argument)