Mengapa tidak Sah Mengisytiharkan Hujah Bukan Lalai selepas Hujah Lalai?
Dalam Python, adalah penting untuk mengikut susunan hujah yang betul apabila mentakrifkan fungsi. Argumen bukan lalai mesti mendahului sebarang argumen lalai. Kekangan ini berpunca daripada fakta bahawa parameter yang diperlukan mesti dinyatakan sebelum parameter pilihan (argumen lalai).
SyntaxRalat: Argumen Bukan Lalai Mengikuti Argumen Lalai
Ralat ini berlaku apabila anda mengisytiharkan fungsi dengan argumen bukan lalai selepas argumen lalai, seperti dalam contoh berikut:
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
Isu Tugasan Tidak Dijangka
Mencampurkan lalai dan bukan lalai hujah membawa kepada kekaburan sintaksis. Mari kita pertimbangkan panggilan fungsi dengan fungsi di atas:
<code class="python">func1("ok a", "ok b", 1) # Is 1 assigned to x or a? func1(1) # Is 1 assigned to a or x? func1(1, 2) # Which arguments are mapped to which parameters?</code>
Adalah mustahil untuk jurubahasa menentukan tugasan yang betul dalam kes sedemikian.
Rujukan kepada O'Reilly - Core-Python
Seperti O'Reilly - Core-Python, semua parameter yang diperlukan harus mendahului sebarang argumen lalai dalam definisi fungsi. Ini memastikan bahawa fungsi boleh dipanggil dengan set minimum parameter yang diperlukan.
Panggilan Argumen Kata Kunci
Argumen kata kunci membenarkan argumen kedudukan yang tidak tertib dan boleh melangkau lebih daripada argumen yang hilang jika digunakan bersama dengan argumen lalai. Sebagai contoh, panggilan fungsi berikut menggunakan argumen kata kunci adalah betul dari segi sintaksis:
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y) # Call with keyword arguments fun1(4, y=5, a="Python is awesome")</code>
Kesimpulan
Untuk mengelakkan SyntaxError dan mengekalkan aliran logik untuk memberikan argumen kepada parameter, adalah penting untuk mengingati penempatan hujah yang betul dalam definisi fungsi. Sentiasa isytiharkan parameter yang diperlukan (argumen bukan lalai) sebelum sebarang parameter pilihan (argumen lalai).
Atas ialah kandungan terperinci Mengapakah Mengisytiharkan Hujah Bukan Lalai Selepas Hujah Lalai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!