Penghias Python ialah alat berkuasa yang membolehkan kami mengubah suai atau meningkatkan tingkah laku fungsi atau kaedah. Kes penggunaan biasa termasuk pengelogan, kebenaran dan banyak lagi.
Walau bagaimanapun, apabila diminta untuk menentukan penghias, ramai yang mungkin berkata,
Ia adalah pembalut untuk satu fungsi.
Walaupun ini betul dari segi teknikal, banyak lagi yang berlaku di bawah hud.
Membedah Penghias Mudah
Mari kita terokai contoh mudah:
def my_decorator(func): def wrapper(*args, **kwargs): print("Before calling the function") result = func(*args, **kwargs) print("After calling the function") return result return wrapper @my_decorator def say_hello(name): print(f"Hello, {name}!")
Di sini, my_decorator ialah penghias untuk fungsi say_hello. Apabila say_hello ditakrifkan, ia dihantar secara automatik kepada my_decorator, mengubah panggilan fungsi menjadi:
say_hello = my_decorator(say_hello)
Bilakah Transformasi Ini Berlaku?
Transformasi ini berlaku semasa penyusunan kod, khususnya pada masa definisi fungsi—bukan pada masa pelaksanaan.
Merungkai Kod
Untuk memahami cara penghias berfungsi pada tahap yang lebih rendah, kita boleh menggunakan modul dis untuk memeriksa kod bait fungsi yang dihias:
import dis @my_decorator def say_hello(name): print(f"Hello, {name}!") dis.dis(say_hello)
Pecahan Bytecode
Keluaran dis.dis(say_hello) mungkin kelihatan seperti ini:
Penjelasan tentang Bytecode
Sebelum Memanggil Fungsi
Memanggil Fungsi Asal
Selepas Memanggil Fungsi
Kesimpulan
Penghias Python lebih daripada sekadar pembungkus fungsi; ia membolehkan kita mengubah suai tingkah laku fungsi pada masa definisi. Dengan memahami cara ia berfungsi dan meneliti kod bait, kami boleh menggunakan penghias dengan lebih berkesan dalam projek kami.
Itu sahaja buat masa ini! Jika ada perkara lain yang anda ingin saya selami, beritahu saya!
Atas ialah kandungan terperinci Memahami Penghias Python: Penyelaman Dalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!