為什麼 Python 函數定義中非預設參數必須位於預設參數之前?

Barbara Streisand
發布: 2024-10-31 23:33:28
原創
639 人瀏覽過

Why Do Non-Default Arguments Have to Precede Default Arguments in Python Function Definitions?

揭示函數參數排序中的語法錯誤

為什麼以下Python程式碼會遇到語法錯誤?

def fun1(a="who is you", b="True", x, y):
    print a,b,x,y
登入後複製

錯誤的原因是函數簽章中非預設參數(x 和 y)必須位於預設參數(a 和 b)之前。必需參數必須出現在具有預設值的可選參數之前。

混合模式的危險

允許非預設參數跟隨預設參數會為解釋器帶來歧義來決定哪些值對應於哪些參數。考慮以下場景:

def fun1(a, b, x="who is you", y="True"):
    ...
登入後複製

假設我們使用以下參數呼叫此函數:

fun1(1, "ok")  # 1 assigned to x, "ok" assigned to a or b?
登入後複製

如果沒有排序規則,就不可能明確地為參數賦值。

函數參數的正確語法

要正確定義函數,預設參數必須永遠位於非預設參數之後。範例函數的正確語法是:

def fun1(x, y, a="who is you", b="True"):
    ...
登入後複製

此語法確保解釋器可以以確定性方式為參數賦值,即使存在關鍵字參數和缺少參數也是如此。

關鍵字參數救援

關鍵字參數可讓您透過明確指定參數名稱來覆寫預設值。這對於跳過缺失的參數特別有用。例如,考慮以下對fun1 的呼叫:

fun1(x=1, b="False")  # Override default value of b
登入後複製

結論

預設參數後面的非預設參數的限制確保了對函數呼叫的清晰和明確的解釋,防止由於參數分配不正確而導致的語法錯誤和運行時錯誤。

以上是為什麼 Python 函數定義中非預設參數必須位於預設參數之前?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!