Sobes.tech
Junior — Middle

Python'da dekoratörler oluştururken functools.wraps fonksiyonunun rolü nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

functools.wraps fonksiyonu, Python'da dekoratörler oluştururken, dekoratörün sardığı orijinal fonksiyonun meta verilerini korumak için kullanılır. wraps kullanılmadığında, fonksiyonun adı, dokümantasyonu (doc) ve diğer öznitelikleri, dekoratör iç fonksiyonunun öznitelikleriyle değiştirilir, bu da hata ayıklamayı ve dokümantasyonu zorlaştırır.

Kullanım örneği:

import functools

def my_decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        print("Fonksiyon çağrılmadan önce")
        result = func(*args, **kwargs)
        print("Fonksiyon çağrıldıktan sonra")
        return result
    return wrapper

@my_decorator
def greet(name):
    "Selamlama fonksiyonu"
    print(f"Merhaba, {name}!")

print(greet.__name__)  # 'greet' yazdırır, 'wrapper' değil
print(greet.__doc__)   # 'Selamlama fonksiyonu' yazdırır

Bu şekilde, functools.wraps, dekorasyon yapılan fonksiyon hakkında bilgileri korumaya yardımcı olur, bu da kodun okunabilirliğini ve bakımını artırır.