Apa fungsi murni dalam python
Fungsi tulen dalam Python merujuk kepada fungsi yang sentiasa mengembalikan output yang sama tanpa kesan sampingan yang diberikan input yang sama. Certinya termasuk: 1. Determinisme, iaitu, input yang sama selalu menghasilkan output yang sama; 2. Tiada kesan sampingan, iaitu, tiada pembolehubah luaran, tiada data input, dan tiada interaksi dengan dunia luar. Sebagai contoh, def add (a, b): return AB adalah fungsi tulen kerana tidak kira berapa kali menambah (2, 3) dipanggil, ia sentiasa mengembalikan 5 tanpa mengubah apa -apa lagi dalam program ini. Sebaliknya, fungsi yang mengubahsuai pembolehubah global atau menukar parameter input adalah fungsi bukan tujuan. Kelebihan fungsi tulen adalah: lebih mudah untuk diuji, lebih sesuai untuk pelaksanaan serentak, hasil cache untuk meningkatkan prestasi, dan boleh dipadankan dengan baik dengan alat pengaturcaraan berfungsi seperti MAP () dan penapis (). Cadangan untuk menulis fungsi tulen termasuk mengelakkan penggunaan atau mengubahsuai pembolehubah global, tidak mengubah parameter input, dan memisahkan operasi I/O dari logik. Walaupun tidak semua fungsi mestilah fungsi tulen, apabila membina aplikasi yang kompleks, fungsi murni harus lebih disukai dalam logik teras, dan kesan sampingan harus digunakan dalam pembalakan, penjimatan cakera dan senario lain.

Fungsi tulen dalam Python adalah fungsi yang, diberi input yang sama, akan sentiasa mengembalikan output yang sama dan tidak mempunyai kesan sampingan. Ini bermakna ia tidak mengubah suai pembolehubah di luar skopnya, bermutasi data input, atau berinteraksi dengan dunia luar (seperti mencetak ke skrin atau menulis ke fail).

Ini mungkin terdengar abstrak pada mulanya, tetapi apabila anda mendapat idea, ia menjadikan kod anda lebih diramalkan dan lebih mudah untuk diuji.
Apa yang menjadikan fungsi "tulen"?
Terdapat dua ciri utama fungsi murni:

- Deterministik : Input yang sama selalu memberikan output yang sama.
- Tiada kesan sampingan : ia tidak mengubah apa -apa di luar dirinya sendiri - bukan pembolehubah global, bukan argumen input, tiada apa -apa.
Inilah contoh fungsi murni:
def tambah (a, b):
Kembali AB Tidak kira berapa kali anda memanggil add(2, 3) , ia akan sentiasa kembali 5 . Dan ia tidak menyentuh apa -apa lagi dalam program anda.

Sekarang bandingkan dengan fungsi yang tidak suci:
kiraan = 0
kenaikan def ():
Kiraan global
kiraan = 1 Fungsi ini mengubah pembolehubah di luar dirinya sendiri ( count ), jadi ia tidak murni.
Mengapa anda perlu mengambil berat tentang fungsi tulen?
Fungsi tulen membantu mengurangkan pepijat dan membuat kod lebih mudah untuk alasan. Berikut adalah beberapa faedah praktikal:
- Lebih mudah untuk diuji : Anda tidak perlu bimbang tentang persediaan atau pembersihan kerana mereka tidak bergantung atau mengubah keadaan luaran.
- Lebih baik untuk kesesuaian : kerana mereka tidak berkongsi keadaan, mereka lebih selamat untuk digunakan secara selari atau pelbagai persekitaran.
- Cacheable : Kerana output hanya bergantung kepada input, anda boleh hasil cache untuk prestasi.
Mereka juga bermain dengan baik dengan alat pengaturcaraan berfungsi seperti map() , filter() , dan perpustakaan seperti functools .
Cara Menulis Lebih Banyak Fungsi Murni
Tidak semestinya (atau perlu) untuk menulis semua kod anda dengan cara ini, tetapi berikut adalah beberapa tabiat untuk bersandar:
- Elakkan menggunakan atau mengubahsuai pembolehubah global.
- Jangan ubah parameter input - terutamanya yang boleh berubah seperti senarai atau dicts. Sebaliknya, buat nilai baru dan kembalikannya.
- Pastikan operasi I/O (seperti membaca/menulis fail atau percetakan) berasingan daripada logik.
Sebagai contoh, bukannya:
def add_item (lst, item):
lst.append (item)Lakukan ini:
def add_item (lst, item):
kembali lst [item]Versi kedua tidak mengubah senarai asal - ia mengembalikan yang baru.
Apabila tidak mengapa melanggar peraturan
Mari kita nyata - tidak setiap fungsi perlu murni. Kadang -kadang anda perlu mengemas kini keadaan atau bekerja dengan sistem luaran. Itu betul -betul baik. Hanya sedar kapan dan mengapa anda melakukannya.
Jika anda membina aplikasi kompleks atau bekerja dengan saluran paip data yang besar, bertujuan untuk kesucian di mana ia paling penting - logik teras, transformasi, dan peraturan perniagaan. Simpan kesan sampingan untuk perkara seperti pembalakan, menyimpan ke cakera, atau interaksi pengguna.
Pada dasarnya itu sahaja.
Atas ialah kandungan terperinci Apa fungsi murni dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Clothoff.io
Penyingkiran pakaian AI
Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!
Artikel Panas
Alat panas
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Apakah kaedah kelas dalam python
Aug 21, 2025 am 04:12 AM
Classmethodsinpythonareboundtotheclassandnottoinstances, membolehkanThemTobeCalledWithoutCreatingAnobject.1.theyaredefinedusingthe@Classmethoddecoratorandtakeclsasthefirstparameter, referringtotheclassitervarfe.2.TheycanCasteScess,
contoh giliran python asyncio
Aug 21, 2025 am 02:13 AM
Asyncio.queue adalah alat giliran untuk komunikasi yang selamat antara tugas -tugas asynchronous. 1. Pengeluar menambah data melalui Awaitqueue.put (item), dan pengguna menggunakan Awaitqueue.get () untuk mendapatkan data; 2. Untuk setiap item yang anda proses, anda perlu memanggil giliran.task_done () untuk menunggu giliran.join () untuk menyelesaikan semua tugas; 3. Gunakan tiada sebagai isyarat akhir untuk memberitahu pengguna untuk berhenti; 4 Apabila pengguna berganda, isyarat akhir perlu dihantar atau semua tugas telah diproses sebelum membatalkan tugas; 5. Giliran menyokong menetapkan kapasiti had maksimum, meletakkan dan mendapatkan operasi secara automatik menggantung dan tidak menyekat gelung acara, dan program akhirnya melewati Canc
Bagaimana cara menjalankan skrip python dan melihat output dalam panel berasingan dalam teks luhur?
Aug 17, 2025 am 06:06 AM
ToseepythonoutputinaseparatePanelinsublimetext, usethebuilt-inbuildsystembysavingyourfilewitha.pyextensionAndpressingctrl b (orcmd b) .2.ensurethecorrectbuSelectedByGyGyGyGyToToToToToToToToToToToToToToToToToToToToToToToToToToToToToToToToToToToStoToToToToToToToToToToToToToSTORS
Bagaimana untuk menggunakan ungkapan biasa dengan modul Re di Python?
Aug 22, 2025 am 07:07 AM
Ekspresi biasa dilaksanakan di Python melalui modul Re untuk mencari, memadankan dan memanipulasi rentetan. 1. Gunakan re.search () untuk mencari perlawanan pertama dalam keseluruhan rentetan, re.match () hanya sepadan pada permulaan rentetan; 2. Gunakan kurungan () untuk menangkap subkumpulan yang sepadan, yang boleh dinamakan untuk meningkatkan kebolehbacaan; 3. Re.findall () mengembalikan semua perlawanan yang tidak bertindih, dan re.finditer () mengembalikan iterator objek yang sepadan; 4. Re.sub () menggantikan teks yang sepadan dan menyokong penggantian fungsi dinamik; 5. Corak umum termasuk \ d, \ w, \ s, dan lain -lain, anda boleh menggunakan re.ignorecase, re.multiline, re.dotall, re re.
Bagaimana untuk membina dan menjalankan python dalam teks luhur?
Aug 22, 2025 pm 03:37 PM
Memastikanpythonisinstalledbyrunningpython-versionorpython3-versionintheterminal; ifnotinstalled, downloadfrompython.organdaddtopath.2.insublimetext, goototools> buangansystem>
Cara Menggunakan Pembolehubah dan Jenis Data di Python
Aug 20, 2025 am 02:07 AM
VariablesinpythonarecreatedbyssigningavalueusingThe = operator, andDatatypessuchasint, float, str, bool, andnonetypedefinetheKindofdatabeingstored, withpythonbeingdynamicallytypecheckecheckecheckechechecharmartimeusingype ()
Cara Lulus Argumen Barisan Perintah ke Skrip di Python
Aug 20, 2025 pm 01:50 PM
Penggunaan.ArgvforsimpleArentGumentAccess, whereagrumentemanmuallyhandledandnoautomaticvalidationorhelpispisprovided.2.useAragparseforrobustintinterfaces, asitsupportsautomatichelp, dyechecking, opsyenal
Cara Debug Aplikasi Python Jauh di VSCODE
Aug 30, 2025 am 06:17 AM
Untuk menyahpepijat aplikasi Python jauh, anda perlu menggunakan debugpy dan mengkonfigurasi pemancar port dan pemetaan jalan: Pertama, pasang debugpy pada mesin jauh dan ubah suai kod untuk mendengar port 5678, hantar port jauh ke kawasan tempatan melalui terowong SSH, kemudian konfigurasi Akhirnya, mulakan aplikasi dan sambungkan ke debugger untuk merealisasikan debugging jarak jauh, pemeriksaan berubah -ubah dan melangkah melangkah. Seluruh proses bergantung pada debugpy, port pemancar dan pemadanan jalan yang tepat.


