為什麼預設參數必須在非預設參數之前?
在 Python 中,函數定義中參數的順序至關重要,尤其是當涉及預設參數和非預設參數的混合時。此排序規則可確保函數呼叫期間參數的明確解釋。
當函數定義中的預設參數後面有非預設參數時(如下例所示),將引發SyntaxError:
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
出現此錯誤是因為函數簽章中必需參數(非預設)必須始終位於可選參數(預設)之前。當函數呼叫中省略參數時,預設參數滿足佔位符值,而非預設參數是必需的。
如果參數放置的順序不正確,如上例所示,解釋器無法確定正確的賦值函數參數的值。目前尚不清楚函數呼叫期間傳遞的值是否與預設參數或非預設參數相符。
為了避免歧義,可以使用以下正確語法:
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y)</code>
關鍵字參數可以與預設參數一起使用,以提供無序位置參數或跳過遺失的參數。例如,預設參數「a」和「b」可以與下列函數呼叫一起使用:
<code class="python">fun1(1, 2, b="False")</code>
在這種情況下,前兩個位置參數被指派給「x」和「y」分別,當關鍵字參數將值「False」指派給「b」時,跳過預設值「True」。
以上是為什麼 Python 函數中預設參數必須位於非預設參數之前?的詳細內容。更多資訊請關注PHP中文網其他相關文章!