Rumah > Artikel > pembangunan bahagian belakang > Mengapakah argumen yang diperlukan mesti mendahului argumen lalai dalam definisi fungsi Python?
Mengapa Argumen Lalai Tidak Boleh Mendahului Argumen Yang Diperlukan?
Dalam Python, SyntaxError dibangkitkan apabila argumen bukan lalai mengikuti argumen lalai dalam senarai parameter fungsi. Sekatan ini wujud untuk memastikan tafsiran nilai hujah yang tidak jelas oleh penterjemah.
Pertimbangkan definisi fungsi berikut:
def fun1(a="who is you", b="True", x, y): print a, b, x, y
Kod ini akan menimbulkan SyntaxError kerana parameter yang diperlukan x dan y mengikuti parameter lalai a dan b.
Argumen yang Diperlukan Diutamakan
Parameter yang diperlukan mesti sentiasa diletakkan sebelum sebarang parameter lalai dalam senarai parameter fungsi. Ini kerana parameter yang diperlukan adalah wajib, manakala parameter lalai adalah pilihan. Secara sintaksis, penterjemah tidak akan dapat menentukan nilai yang sepadan dengan hujah yang mana jika ia bercampur.
Contoh
Kod berikut berjalan tanpa ralat kerana parameter yang diperlukan x dan y diletakkan sebelum parameter lalai a dan b:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
Argumen Kata Kunci
Argumen kata kunci boleh digunakan untuk memanggil fungsi dengan argumen dalam sebarang susunan. Walau bagaimanapun, susunan parameter dalam senarai parameter fungsi masih mengawal nilai yang diberikan kepada argumen yang mana.
Sebagai contoh, dengan definisi fungsi di atas:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
Kod berikut ialah sah:
fun1("ok a", "ok b", 1) # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
Walau bagaimanapun, jika parameter tidak diisytiharkan dengan nilai lalai:
def fun1(x, y, a, b): print a, b, x, y
Kod berikut akan menimbulkan TypeError:
fun1("ok a", "ok b", 1) # 3 arguments instead of 4
Oleh itu , argumen lalai berguna untuk membenarkan argumen pilihan atau melangkau argumen yang hilang apabila menggunakan argumen kata kunci.
Atas ialah kandungan terperinci Mengapakah argumen yang diperlukan mesti mendahului argumen lalai dalam definisi fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!