Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah argumen yang diperlukan mesti mendahului argumen lalai dalam definisi fungsi Python?

Mengapakah argumen yang diperlukan mesti mendahului argumen lalai dalam definisi fungsi Python?

Susan Sarandon
Susan Sarandonasal
2024-10-31 22:24:02507semak imbas

Why must required arguments precede default arguments in Python function definitions?

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!

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