🔹 مثلاً این کدِ یک زمانسنج سادهست که نشون میده تابع چقدر طول میکشه اجرا بشه:
import time
def timer(func):
def wrapper():
start = time.time()
func()
print(f"زمان اجرا: {time.time() - start:.4f} ثانیه")
return wrapper
@timer
def say_hello():
time.sleep(1)
print("سلام به دنیای پایتون!")
say_hello()
🔹 میبینی که چطور با قرار دادن
@timer بالای تابع say_hello، بدون اینکه حتی یک خط از منطق داخل خودِ تابع رو دستکاری کنیم، قابلیت زمانسنجی بهش اضافه شد. هر جا دیدی یه چیزی با @ شروع میشه و بالای تعریف یه تابع نشسته، بدون که داره اون تابع رو با قابلیتهای جدید "دکور" میکنه.🐍 @python_rd