Menyingkap Fungsi functools.wraps
Di dalam alam penghias Python, persoalan timbul: apakah tujuan functools.wraps ?
Pemahaman Penghias
Penghias membenarkan kami meningkatkan kefungsian fungsi sedia ada dengan membungkusnya dengan logik tersuai. Walau bagaimanapun, proses pembungkusan ini boleh mengakibatkan kehilangan metadata yang dikaitkan dengan fungsi asal, iaitu nama, dokumentasi dan senarai argumennya.
Memperkenalkan functools.wraps
Di sinilah fungsi functools.wraps. Ia adalah penghias yang menangani isu kehilangan metadata. Dengan menggunakan @wraps(func) pada fungsi penghias, kami mengarahkan penghias untuk mewarisi metadata fungsi asal.
Cara functools.wraps Berfungsi
Contoh Penggunaan
Pertimbangkan contoh berikut:
def logged(func): @wraps(func) def with_logging(*args, **kwargs): print(func.__name__ + " was called") return func(*args, **kwargs) return with_logging @logged def f(x): """Computes a mathematical operation.""" return x + x * x
Dengan menggunakan @wraps(func) pada penghias log , kami memastikan bahawa fungsi yang dibalut f mengekalkan nama asal, dokumentasi dan hujahnya senarai:
Kesimpulan
functools.wraps memainkan peranan penting dalam memelihara metadata fungsi yang dibalut dengan penghias, memastikan maklumat penting tidak hilang. Dengan menggunakan @wraps(func), kami boleh mencipta penghias yang fleksibel dan bermaklumat yang meningkatkan tingkah laku fungsi dengan berkesan tanpa menjejaskan ciri asalnya.
Atas ialah kandungan terperinci Apakah Yang Dilakukan `functools.wraps` dalam Penghias Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!