Python
4-mavzu: Dekoratorlar — Python’da funktsiyalarni kengaytirish
Dekoratorlar Python tilida funktsiyani o‘zgartirmasdan uning xatti-harakatini kengaytirishga imkon beradigan qudratli vosita. Oddiy qilib aytganda, decorator boshqa funktsiyani qamrab oladi va chaqirilganda uning ishini o‘zgartirib yuboradi. @decorator sintaksisi yordamida qayerda nima qo‘llanishini ko‘p hollarda osonlashtiradi: rejimni yozilishni kamaytiradi, loglash, kechikish, cached natijalar yoki instrumentatsiya uchun ajoyib usul. Shunchaki eslatib o‘tilsa, dekoratorlar yuqori darajada moslashuvchanlik beradi, lekin tushunishni qiyinlashtirmasligi uchun puxta o‘rganish kerak.
Quyidagi misolda oddiy bir dekorator yozamiz: funksiya chaqirilganda uning nomini chiqarib, keyin asl natijani qaytaradi. Bu orqali biz funktsiyalarning ishini kuzatish yoki yakuniy xatti-harakatni o‘zgartirmasdan faqat qo‘shimcha amallar qo‘shishimiz mumkin.
def log_calls(func):
def wrapper(*args, **kwargs):
print(f"Calling {func.__name__}")
return func(*args, **kwargs)
return wrapper
@log_calls
def greet(name):
return f"Salom, {name}!"
print(greet("Ali"))
Calling greet
Salom, Ali!
Sizningcha, dekoratorlar orqali qanday kengaytirilgan xatti-harakatlar (masalan, autentifikatsiya tekshiruvi, caching yoki o‘lchovlar) yozishni ko‘rib chiqqaningiz bormi?
6 ·