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.