2017-06-18 417 views
3

我想了解如何將參數傳遞給該function解釋:蟒蛇位置參數

def f(a, *, b): 
    return a, b 

看來這function強制主叫方撥打f()與正好2 PARAMS和第二PARAM應該永遠是一個名爲b= param。我如何從function簽名中解密這個?爲什麼它不允許我爲*指定中間參數?

回答

4

我如何從函數簽名中解密這個?

  1. 必須傳遞沒有默認值的參數。
  2. *之後的參數必須通過關鍵字傳遞,如果它們完全通過的話。
  3. 無法傳遞額外參數以「填滿」*,除非參數名稱附帶*

由於b沒有默認值,所以必須通過。由於它在*之後,因此必須通過關鍵字傳遞。由於*是「裸」(即,它只是*佔位符,而不是像*args這樣的可變參數),因此不能將其他位置參數作爲「中間」參數傳遞。

請參閱PEP 3102瞭解關鍵字參數語法的描述。

+0

很好的解釋,我比官方文檔更好地理解它。 – user3079275

3

單獨使用*是一種Python3唯一的方式來表達以下參數是命名參數,並且只能傳遞給函數。

From the documentation:

參數後「*」或「*identifier」是關鍵字唯一參數,並且可以僅被傳遞使用關鍵字參數。