Rumah >pembangunan bahagian belakang >Tutorial Python >Memahami penghias python, dengan contoh
Penghias fungsi di Python hanyalah fungsi yang mengambil fungsi lain sebagai hujah, memperluaskan fungsi fungsi yang dihiasi tanpa mengubah strukturnya. Penghias membungkus fungsi lain, meningkatkan tingkah lakunya, dan kemudian mengembalikannya.
Konsep penghias dalam Python membantu mengekalkan kod kering (jangan ulangi diri anda). Penghias fungsi mengelakkan pertindihan yang tidak perlu dalam asas kod, kerana beberapa coretan kod pendua boleh digabungkan untuk membentuk penghias fungsi. Semasa anda maju dalam pembangunan dengan Python, penghias boleh membantu dengan analisis dan dokumentasi. Mereka juga penting untuk menubuhkan pengesahan dan pemeriksaan runtime.
Dalam apa yang berikut, saya menganggap anda mempunyai pemahaman asas mengenai fungsi dan pengaturcaraan Python, dan anda mempunyai sekurang -kurangnya Python 3.8 yang dipasang pada peranti anda.
mata utama
perkara yang perlu diketahui sebelum menyelidiki penghias python
Dalam Python, fungsi adalah warga kelas pertama, yang bermaksud mereka boleh menerima parameter atau diluluskan sebagai parameter. Untuk memahami sepenuhnya konsep penghias, anda perlu mengetahui perkara berikut.Fungsi
adalah objek, yang bermaksud ia boleh diberikan kepada pembolehubah lain<code class="language-python">def greet(): print("Hello John") greet_john = greet greet_john() >>> Hello John</code>Sentiasa ingat bahawa dalam Python semuanya adalah objek. Dengan cara yang sama anda memberikan nilai kepada pembolehubah, fungsi juga boleh diberikan kepada pembolehubah jika perlu. Ini penting apabila anda belajar tentang penghias.
Fungsi
boleh kembali<code class="language-python">def greet(): def greeting_at_dawn(): print("Good morning") return greeting_at_dawn salute = greet() salute() >>> Good morning</code>Fungsi dalaman dalam python boleh dikembalikan dari fungsi luaran. Ini adalah sebahagian daripada konsep pengaturcaraan berfungsi yang akan anda hadapi.
fungsi boleh diluluskan sebagai parameter fungsi lain
<code class="language-python">def greet_some(func): print("Good morning", end=' ') func() def say_name(): print("John") greet_some(say_name) >>> Good morning John</code>Fungsi yang menerima parameter fungsi dipanggil fungsi pesanan yang lebih tinggi.
Pastikan anda menyimpan perkara -perkara di atas ketika belajar melaksanakan penghias dan menggunakannya dengan berkesan dalam program Python.
mekanisme operasi penghias python
Sentiasa simpan dua perkara berikut dalam fikiran ketika menentukan penghias:
<code class="language-python">def greet(): print("Hello John") greet_john = greet greet_john() >>> Hello John</code>Lihat kod di atas, fungsi luaran
(juga dikenali sebagai penghias) menerima parameter fungsi increase_number
. func
adalah fungsi pembalut yang mengandungi fungsi increase_by_one
get_number
Mudah untuk mengenali fungsi penghias mudah apabila ia bermula dengan @ awalan dan menggabungkan fungsi menghias di bawahnya. Contoh terdahulu boleh ditakrifkan seperti berikut:
Contoh -contoh ini menunjukkan bahawa penghias memanjangkan fungsi parameter fungsinya.
<code class="language-python">def greet(): def greeting_at_dawn(): print("Good morning") return greeting_at_dawn salute = greet() salute() >>> Good morning</code>
fungsi penghias dengan parameter
Dalam beberapa kes, anda mungkin perlu lulus parameter ke penghias. Penyelesaian masalah ini adalah untuk lulus hujah ke fungsi pembalut dan kemudian lulus ke fungsi yang dihiasi. Lihat contoh berikut:
Parameter lulus ke fungsi dalaman atau bersarang menjadikannya lebih kuat dan mantap kerana ia memberikan lebih banyak fleksibiliti untuk memanipulasi fungsi yang dihiasi. Mana -mana bilangan parameter (*args) atau parameter kata kunci (** kwargs) boleh dihantar ke fungsi yang dihiasi. *Args membolehkan pengumpulan semua parameter kedudukan, manakala ** kwargs digunakan untuk semua parameter kata kunci yang diperlukan semasa panggilan fungsi. Mari kita lihat contoh mudah lain:
<code class="language-python">def greet_some(func): print("Good morning", end=' ') func() def say_name(): print("John") greet_some(say_name) >>> Good morning John</code>
Dalam contoh di atas, *args mengambil parameter kedudukan sebagai tuple untuk membentuk objek yang boleh dimakan, manakala ** kwargs membentuk kamus parameter kata kunci.
<code class="language-python">def increase_number(func): def increase_by_one(): print("incrementing number by 1 ...") number_plus_one = func() + 1 return number_plus_one return increase_by_one def get_number(): return 5 get_new_number = increase_number(get_number) print(get_new_number()) >>> incrementing number by 1 ... 6</code>
Pelbagai penghias atau panggilan rantai di Python
Apabila menggunakan penghias fungsi dalam projek Python, terdapat beberapa pilihan untuk diterokai. Kes penggunaan lain adalah untuk menghubungkan penghias (dua atau lebih) ke fungsi. Fungsi boleh dihiasi dengan pelbagai penghias (pelbagai penghias), yang dicapai dengan menyusun satu penghias di atas yang lain, mengikut urutan yang tidak relevan. Terlepas dari urutan di mana pelbagai penghias disusun, anda akan mendapat output yang sama seperti yang ditunjukkan dalam contoh berikut:
<code class="language-python">def increase_number(func): def increase_by_one(): print("incrementing number by 1 ...") number_plus_one = func() + 1 return number_plus_one return increase_by_one @increase_number def get_number(): return 5 print(get_number()) >>> incrementing number by 1 ... 6</code>Kes penggunaan praktikal untuk Python Decorator
Cara yang sangat popular untuk menggunakan penghias di Python adalah sebagai logger masa. Ini membantu pengaturcara memahami berapa lama masa yang diperlukan untuk melaksanakan fungsi untuk mengukur kecekapan.
Hafalan adalah satu lagi cara yang sejuk untuk menggunakan penghias di Python. Apabila pengiraan dilakukan kemudian, hasil dari panggilan berulang ke fungsi dapat diingati dengan mudah tanpa sebarang perubahan. Anda hanya boleh menggunakan penghias untuk menghafal fungsi tersebut.
penghias python terbina dalam seperti @classmethod, @staticmethod, dan @property sangat popular dalam mod penghias OOP Python.
Kesimpulan
Python Decorators menguatkuasakan prinsip kering kejuruteraan perisian kerana ia digunakan sebagai kod yang boleh diguna semula. Fikirkan tentang berapa banyak fungsi Python yang boleh anda refactor ke dalam penghias. Dalam artikel ini, kami meneroka pelbagai bentuk penghias. Terdapat juga penghias kelas, walaupun kami tidak menutupnya di sini.
penghias menjadikannya lebih mudah untuk menambah fungsi tambahan kepada fungsi, kaedah, atau kelas mudah tanpa mengubah kod sumber mereka sambil mengekalkan kod kering. Cuba menghias fungsi diri anda untuk lebih memahami corak penghias.
Soalan Lazim Mengenai JavaScript Decorators
JavaScript Decorator adalah corak reka bentuk dan ciri yang diperkenalkan dalam ECMAScript 2016 (ES6) dan kemudian versi JavaScript. Ia membolehkan anda mengubah suai atau meningkatkan tingkah laku fungsi, kaedah, atau kelas dengan menggunakan komen atau metadata kepadanya. Penghias biasanya digunakan dalam pelbagai perpustakaan dan kerangka JavaScript, seperti Angular dan Mobx. Penghias biasanya dilaksanakan sebagai fungsi yang membungkus atau "menghiasi" fungsi objektif atau kelas. Mereka digunakan untuk menambah fungsi atau mengubah tingkah laku sasaran tanpa mengubah kod terasnya. Penghias boleh digunakan untuk fungsi, kaedah, atau kelas, dan ia ditunjukkan oleh simbol @ diikuti dengan nama penghias.
Decorators in JavaScript adalah tambahan yang berharga kepada bahasa untuk alasan berikut: Mereka mempromosikan modulariti dan kebolehgunaan semula kod dengan membenarkan pemaju memisahkan kebimbangan silang dari logik teras fungsi dan kaedah. Ini menggalakkan asas kod bersih dengan mengurangkan kekeliruan dan meningkatkan kebolehbacaan, menjadikan kod lebih mudah untuk mengekalkan dan memahami. Penghias memainkan peranan penting dalam mematuhi prinsip pemisahan kebimbangan, kerana ia membolehkan anda memisahkan aspek seperti keselamatan, pembalakan, dan konfigurasi dari logik aplikasi teras. Penghias membawa konsistensi ke pangkalan kod anda dengan memastikan tingkah laku atau dasar tertentu digunakan secara konsisten untuk fungsi dan kaedah. Mereka menyediakan cara yang fleksibel untuk mengkonfigurasi dan menyesuaikan tingkah laku fungsi, yang membolehkan perubahan mudah atau lanjutan fungsi tanpa mengubahsuai kod teras. Dengan menyokong pengaturcaraan berorientasikan aspek (AOP), penghias membantu secara sistematik menangani kebimbangan silang, menghasilkan kod yang lebih bersih dan lebih teratur. Penghias juga semakin diterima oleh perpustakaan dan rangka kerja pihak ketiga, menjadikan mereka kemahiran yang mesti dimiliki untuk menggunakan alat JavaScript moden yang cekap. Secara keseluruhannya, penghias meningkatkan organisasi kod, kebolehbacaan, kebolehkerjaan, dan skalabiliti, menjadikannya aset berharga untuk pemaju JavaScript.
Python dan JavaScript Decorators berkongsi konsep mengubahsuai fungsi atau tingkah laku kaedah, tetapi berbeza dalam sintaks dan penggunaan. Python menggunakan sintaks @decorator_function dan boleh digunakan untuk fungsi dan kelas untuk pelbagai tujuan. JavaScript Decorator menggunakan sintaks @decorator dan digunakan terutamanya untuk kelas, kaedah, dan sifat. Penghias python lebih serba boleh, manakala penghias JavaScript adalah kelas-centric dan diperkenalkan sebagai sebahagian daripada ECMAScript 2016.
Output mengekalkan pemformatan imej asal dan tidak mengubah makna teras teks input.
Atas ialah kandungan terperinci Memahami penghias python, dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!