Sobes.tech
Junior — Middle

Python'da dekoratorlar yaratishda functools.wraps funksiyasining roli nima?

sobes.tech AI

AIdan javob

functools.wraps funksiyasi Python'da dekoratorlar yaratishda asl funksiyaning meta ma'lumotlarini saqlash uchun ishlatiladi. Wraps ishlatilmasdan, funksiyaning nomi, uning hujjat (doc) va boshqa atributlar, dekoratorning ichki funksiyasining atributlariga o'zgartiriladi, bu esa debugging va hujjatlashtirishni qiyinlashtiradi.

Foydalanish misoli:

import functools

def my_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print("Funktsiya chaqirilishidan oldin")
        result = func(*args, **kwargs)
        print("Funktsiya chaqirilgach")
        return result
    return wrapper

@my_decorator
def greet(name):
    "Salomlashish funksiyasi"
    print(f"Salom, {name}!")

print(greet.__name__)  # 'greet' ni chiqaradi, 'wrapper' emas
print(greet.__doc__)   # 'Salomlashish funksiyasi' ni chiqaradi

Shu tarzda, functools.wraps, dekoratsiya qilingan funktsiya haqida ma'lumotlarni saqlashga yordam beradi, bu esa kodning o'qilishi va texnik xizmat ko'rsatishni yaxshilaydi.