cari
Rumahpembangunan bahagian belakangTutorial PythonMemahami penghias python, dengan contoh

Understanding Python Decorators, with Examples

Artikel ini akan membantu anda memahami konsep penghias dalam pengaturcaraan Python dan cara menggunakannya dengan baik. Kami akan merangkumi apa yang dihias Python, apa sintaks mereka, bagaimana untuk mengenali mereka dalam skrip atau rangka kerja, dan bagaimana untuk menerapkannya sendiri.

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

    penghias python adalah fungsi yang mengambil fungsi lain sebagai hujah, yang meningkatkan fungsinya tanpa mengubah strukturnya. Mereka membantu menyimpan kod kering (jangan ulangi diri anda) dengan mengelakkan pertindihan yang tidak perlu dan boleh digunakan untuk analisis, pembalakan, pengesahan, dan pemeriksaan runtime.
  • Dalam python, fungsi penghias ditakrifkan oleh fungsi luaran yang menerima parameter fungsi dan fungsi bersarang yang membungkus fungsi menghias di dalam fungsi luaran. Penghias mudah dikenal pasti oleh awalan "@" sebelum fungsi penghias. Parameter boleh dihantar ke fungsi pembalut dan kemudian ke fungsi yang dihiasi.
  • Penghias boleh dirantai dalam python, yang bermaksud bahawa fungsi boleh dihiasi dengan pelbagai penghias. Ini dilakukan dengan menyusun satu penghias di atas yang lain. Kes penggunaan praktikal untuk penghias python termasuk pembalakan masa, memori, dan penghias python terbina dalam seperti @classmethod, @staticmethod, dan @property.

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

def greet():
    print("Hello John")

greet_john = greet
greet_john()
>>>
Hello John
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

dari fungsi lain

def greet():
    def greeting_at_dawn():
        print("Good morning")

    return greeting_at_dawn

salute = greet()
salute()
>>>
Good morning
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

def greet_some(func):
    print("Good morning", end=' ')
    func()

def say_name():
    print("John")

greet_some(say_name)
>>>
Good morning John
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

Fungsi penghias mudah bermula dengan definisi fungsi, fungsi penghias, dan kemudian fungsi bersarang dalam fungsi pembalut luaran.

Sentiasa simpan dua perkara berikut dalam fikiran ketika menentukan penghias:

    Untuk melaksanakan penghias, tentukan fungsi luaran yang menerima parameter fungsi.
  1. Nest fungsi pembalut dalam fungsi penghias luaran, yang juga membungkus fungsi penghias.
Berikut adalah fungsi penghias yang paling asas seperti dalam coretan kod berikut:

def greet():
    print("Hello John")

greet_john = greet
greet_john()
>>>
Hello John
Lihat kod di atas, fungsi luaran

(juga dikenali sebagai penghias) menerima parameter fungsi increase_number. func adalah fungsi pembalut yang mengandungi fungsi yang dihiasi. Penghias ditugaskan kepada pemboleh ubah lain. Inilah sintaks penghias apabila menggunakan Python Decorator. Walau bagaimanapun, terdapat cara yang lebih mudah untuk mewakili penghias. 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.
def greet():
    def greeting_at_dawn():
        print("Good morning")

    return greeting_at_dawn

salute = greet()
salute()
>>>
Good morning

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:
def greet_some(func):
    print("Good morning", end=' ')
    func()

def say_name():
    print("John")

greet_some(say_name)
>>>
Good morning John

Dalam contoh di atas, *args mengambil parameter kedudukan sebagai tuple untuk membentuk objek yang boleh dimakan, manakala ** kwargs membentuk kamus parameter kata kunci.
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

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:

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
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

Apakah penghias JavaScript?

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.

Mengapa kita memerlukan penghias JavaScript?

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.

Apakah perbezaan antara penghias python dan penghias 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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python vs C: Memahami perbezaan utamaPython vs C: Memahami perbezaan utamaApr 21, 2025 am 12:18 AM

Python dan C masing -masing mempunyai kelebihan sendiri, dan pilihannya harus berdasarkan keperluan projek. 1) Python sesuai untuk pembangunan pesat dan pemprosesan data kerana sintaks ringkas dan menaip dinamik. 2) C sesuai untuk prestasi tinggi dan pengaturcaraan sistem kerana menaip statik dan pengurusan memori manual.

Python vs C: Bahasa mana yang harus dipilih untuk projek anda?Python vs C: Bahasa mana yang harus dipilih untuk projek anda?Apr 21, 2025 am 12:17 AM

Memilih Python atau C bergantung kepada keperluan projek: 1) Jika anda memerlukan pembangunan pesat, pemprosesan data dan reka bentuk prototaip, pilih Python; 2) Jika anda memerlukan prestasi tinggi, latensi rendah dan kawalan perkakasan yang rapat, pilih C.

Mencapai matlamat python anda: kekuatan 2 jam sehariMencapai matlamat python anda: kekuatan 2 jam sehariApr 20, 2025 am 12:21 AM

Dengan melabur 2 jam pembelajaran python setiap hari, anda dapat meningkatkan kemahiran pengaturcaraan anda dengan berkesan. 1. Ketahui Pengetahuan Baru: Baca dokumen atau tutorial menonton. 2. Amalan: Tulis kod dan latihan lengkap. 3. Kajian: Menyatukan kandungan yang telah anda pelajari. 4. Amalan Projek: Sapukan apa yang telah anda pelajari dalam projek sebenar. Pelan pembelajaran berstruktur seperti ini dapat membantu anda menguasai Python secara sistematik dan mencapai matlamat kerjaya.

Memaksimumkan 2 Jam: Strategi Pembelajaran Python BerkesanMemaksimumkan 2 Jam: Strategi Pembelajaran Python BerkesanApr 20, 2025 am 12:20 AM

Kaedah untuk belajar python dengan cekap dalam masa dua jam termasuk: 1. Semak pengetahuan asas dan pastikan anda sudah biasa dengan pemasangan Python dan sintaks asas; 2. Memahami konsep teras python, seperti pembolehubah, senarai, fungsi, dan lain -lain; 3. Menguasai penggunaan asas dan lanjutan dengan menggunakan contoh; 4. Belajar kesilapan biasa dan teknik debugging; 5. Memohon pengoptimuman prestasi dan amalan terbaik, seperti menggunakan komprehensif senarai dan mengikuti panduan gaya PEP8.

Memilih antara python dan c: bahasa yang sesuai untuk andaMemilih antara python dan c: bahasa yang sesuai untuk andaApr 20, 2025 am 12:20 AM

Python sesuai untuk pemula dan sains data, dan C sesuai untuk pengaturcaraan sistem dan pembangunan permainan. 1. Python adalah mudah dan mudah digunakan, sesuai untuk sains data dan pembangunan web. 2.C menyediakan prestasi dan kawalan yang tinggi, sesuai untuk pembangunan permainan dan pengaturcaraan sistem. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Python vs C: Analisis perbandingan bahasa pengaturcaraanPython vs C: Analisis perbandingan bahasa pengaturcaraanApr 20, 2025 am 12:14 AM

Python lebih sesuai untuk sains data dan perkembangan pesat, manakala C lebih sesuai untuk prestasi tinggi dan pengaturcaraan sistem. 1. Sintaks Python adalah ringkas dan mudah dipelajari, sesuai untuk pemprosesan data dan pengkomputeran saintifik. 2.C mempunyai sintaks kompleks tetapi prestasi yang sangat baik dan sering digunakan dalam pembangunan permainan dan pengaturcaraan sistem.

2 jam sehari: potensi pembelajaran python2 jam sehari: potensi pembelajaran pythonApr 20, 2025 am 12:14 AM

Adalah mungkin untuk melabur dua jam sehari untuk belajar Python. 1. Belajar Pengetahuan Baru: Ketahui konsep baru dalam satu jam, seperti senarai dan kamus. 2. Amalan dan Amalan: Gunakan satu jam untuk melakukan latihan pengaturcaraan, seperti menulis program kecil. Melalui perancangan dan ketekunan yang munasabah, anda boleh menguasai konsep teras Python dalam masa yang singkat.

Python vs C: Lengkung pembelajaran dan kemudahan penggunaanPython vs C: Lengkung pembelajaran dan kemudahan penggunaanApr 19, 2025 am 12:20 AM

Python lebih mudah dipelajari dan digunakan, manakala C lebih kuat tetapi kompleks. 1. Sintaks Python adalah ringkas dan sesuai untuk pemula. Penaipan dinamik dan pengurusan memori automatik menjadikannya mudah digunakan, tetapi boleh menyebabkan kesilapan runtime. 2.C menyediakan kawalan peringkat rendah dan ciri-ciri canggih, sesuai untuk aplikasi berprestasi tinggi, tetapi mempunyai ambang pembelajaran yang tinggi dan memerlukan memori manual dan pengurusan keselamatan jenis.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini