علامت @ در پایتون چه کاربردی داره؟
What does the @ symbol do in Python?
علامت @ در پایتون چه کاربردی داره و چه وقت باید ازش استفاده کرد؟
علامت @ در پایتون برای چیزی به نام "تزئینکنندهها" (decorators) استفاده میشه. اینها توابعی هستن که میتونن به توابع یا متدهای دیگه اضافه بشن و قبل یا بعد از اجرای اونها، تغییراتی اعمال کنن یا ویژگیهای جدیدی اضافه کنن.
مثلاً فرض کن میخوای یه تابع داشته باشی که قبل از اجرای تابع اصلی یه پیام چاپ کنه و بعدش هم یه پیام دیگه. با استفاده از تزئینکنندهها میتونی این کارو خیلی راحت انجام بدی. اینجوری میتونی با علامت @، تزئینکننده رو به تابع اصلی بچسبونی.
برای اینکه بیشتر متوجه بشی، یه مثال میزنم:
# Define a decorator function def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper # Apply the decorator to a function @my_decorator def say_hello(): print("Hello!") # Call the decorated function say_hello()
تو این مثال، تابع my_decorator به عنوان تزئینکننده عمل میکنه و با علامت @ به تابع say_hello اضافه شده. هر بار که say_hello رو صدا بزنی، تغییرات اضافی که توی wrapper مشخص شده، قبل و بعد از اجرای تابع اصلی انجام میشه. به این ترتیب، میتونی به راحتی ویژگیهای جدیدی به توابع اضافه کنی!