Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah `functools.wraps` Mengekalkan Atribut Fungsi Asal dalam Penghias Python?
Memahami functools.wraps
Dalam pengaturcaraan Python, penghias biasanya digunakan untuk menambah kefungsian pada fungsi. Walau bagaimanapun, menggunakan penghias kadangkala boleh menggantikan fungsi asal dengan yang baharu, yang membawa kepada kehilangan atribut fungsi penting seperti nama, docstring dan senarai hujah.
Di sinilah fungsi functools.wraps dimainkan. Ia adalah penghias yang membolehkan pengguna mengekalkan sifat-sifat fungsi asal apabila menggunakan penghias. Pada asasnya, ia "membungkus" fungsi baharu yang dicipta oleh penghias dengan atribut fungsi asal.
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
Apabila anda menggunakan penghias ini, ia memastikan bahawa fungsi itu mengekalkan nama asal, docstring dan senarai hujahnya, walaupun ia telah diubah suai oleh fungsi pengelogan. Berikut ialah contoh cara ia berfungsi:
@logged def f(x): """does some math""" return x + x * x print(f.__name__) # prints 'f' print(f.__doc__) # prints 'does some math'
Tanpa functools.wraps, penghias akan menggantikan fungsi asal dengan fungsi baharu dengan nama yang berbeza dan tiada docstring, menjadikannya sukar untuk mengenal pasti dan mentafsir tingkah laku fungsi.
Atas ialah kandungan terperinci Bagaimanakah `functools.wraps` Mengekalkan Atribut Fungsi Asal dalam Penghias Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!