為什麼預設參數不能在必需參數之前?
在 Python 中,當非預設參數跟在預設參數後面時,會引發語法錯誤函數的參數清單。此限制的存在是為了確保解釋器對參數值的明確解釋。
考慮以下函數定義:
def fun1(a="who is you", b="True", x, y): print a, b, x, y
此程式碼將引發語法錯誤,因為所需的參數 x 和 y 遵循預設參數 a 和 b。
必需參數優先
必需參數必須始終放置在函數參數清單中的任何預設參數之前。這是因為必需參數是強制性的,而預設參數是可選的。從語法上講,如果混合使用,解釋器將無法確定哪些值與哪些參數相符。
範例
以下程式碼運行時沒有錯誤,因為所需的參數 x和 y 放置在預設參數 a 和 b之前:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
關鍵字參數
關鍵字參數可用來以任何順序呼叫帶有參數的函數。但是,函數參數清單中參數的順序仍然決定將哪些值指派給哪些參數。
例如,對於上面的函數定義:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
以下程式碼是有效:
fun1("ok a", "ok b", 1) # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
但是,如果未使用預設值聲明參數:
def fun1(x, y, a, b): print a, b, x, y
以下程式碼將引發TypeError:
fun1("ok a", "ok b", 1) # 3 arguments instead of 4
因此,預設參數對於允許可選參數或在使用關鍵字參數時跳過缺少的參數很有用。
以上是為什麼 Python 函數定義中必需的參數必須位於預設參數之前?的詳細內容。更多資訊請關注PHP中文網其他相關文章!