Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Argumen Lalai Mesti Datang Sebelum Argumen Bukan Lalai dalam Fungsi Python?
Kenapa Argumen Lalai Mesti Mendahului Argumen Bukan Lalai?
Dalam Python, susunan argumen dalam definisi fungsi adalah penting, terutamanya apabila campuran argumen lalai dan bukan lalai terlibat. Peraturan susunan ini memastikan tafsiran argumen yang tidak jelas semasa panggilan fungsi.
Apabila argumen bukan lalai mengikuti argumen lalai dalam definisi fungsi, seperti dalam contoh berikut, SyntaxError dilemparkan:
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
Ralat ini berlaku kerana parameter yang diperlukan (bukan lalai) mesti sentiasa mendahului parameter pilihan (lalai) dalam tandatangan fungsi. Argumen lalai memenuhi nilai pemegang tempat apabila argumen ditinggalkan dalam panggilan fungsi, manakala argumen bukan lalai adalah wajib.
Jika argumen diletakkan dalam susunan yang salah, seperti yang dilihat dalam contoh di atas, penterjemah tidak dapat menentukan tugasan yang betul nilai kepada parameter fungsi. Tidak jelas sama ada nilai yang dihantar semasa panggilan fungsi akan sepadan dengan argumen lalai atau bukan lalai.
Untuk mengelakkan kekaburan, sintaks yang betul berikut boleh digunakan:
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y)</code>
Kata kunci argumen boleh digunakan bersama-sama dengan argumen lalai untuk menyediakan argumen kedudukan yang tidak teratur atau melangkau argumen yang hilang. Sebagai contoh, argumen lalai "a" dan "b" boleh digunakan dengan panggilan fungsi berikut:
<code class="python">fun1(1, 2, b="False")</code>
Dalam kes ini, dua argumen kedudukan pertama ditetapkan kepada "x" dan "y" masing-masing, manakala hujah kata kunci memberikan nilai "Salah" kepada "b", melangkau nilai lalai "Benar".
Atas ialah kandungan terperinci Mengapa Argumen Lalai Mesti Datang Sebelum Argumen Bukan Lalai dalam Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!