Python
Dekoratorlar bilan ishlash
Dekoratorlar Pythondagi funksiyalarni o‘zgartirmasdan ularga qo‘shimcha imkoniyatlar berish uchun ishlatiladi. Ular — noto‘g‘ri lokal holatni saqlab qolmasdan, kirish argumentlari, natijalar yoki hatoliklarni nazorat qilishning qulay yo‘li. Dekoratorlar yozuvlarni xotirada tozalab, kodni yanada modulyar qiladi. Buning uchun oddiy funktsiya yuqori darajadagi funksiyaga o‘raladi va o‘sha o‘ralgan funksiya sifatida uzatiladi.
def log_decorator(func):
def wrapper(*args, **kwargs):
print("Calling:", func.__name__)
result = func(*args, **kwargs)
print("Finished:", func.__name__)
return result
return wrapper
@log_decorator
def greet(name: str) -> str:
return f"Hello, {name}!"
print(greet("Alice"))
Hamma ishlar ishlashi uchun dekoratorlar funktsiyaga qo‘yilgan @ belgisidan foydalanadi. Bu yerda log_decorator funksiyasi wrapper nomli ichki funksiya orqali kirish argumentlari va natijani nazorat qiladi. Dekoratorni qo‘llash orqali biz har bir chaqiruvda qaysi nomli funksiyaning chaqirilganini, qachon yakunlangani kabi ma’lumotlarni huddi loglash kabi ko‘rsatamiz. Shuningdek, dekoratorlar argumentlar bilan moslashuvchan: parametrlari dinamik bo‘lgan funksiyalar uchun ham mos keladi.
Output:
Hello, Alice!
Calling: greet
Finished: greet
Hello, Alice!
Siz o‘zingiz uchun yangi dekorator yozmoqchi bo‘lsangiz, uning maqsadini aniqlab oling: xotirjam nazorat, caching, autentifikatsiya yoki vaqtchegarani qo‘shish bo‘lishi mumkin. Oddiyroq misolda dekorator yordamida funksiyani vaqt chegaralovchi qilib yozish mumkin—vaqt chegarasi o‘tdi deganda natijani qaytarmay ham qo‘yish mumkin. Qanday vazifa uchun dekorator yaratgan bo‘lardingiz va uning chegaralari qanday bo‘ladi?
6 ·