Python 的 Keyword-Only Arguments (強制關鍵字參數)

直接看一個正常的函數及其調用:python

def dog(name, host, age):
    print(name, host, age)

dog('dobi', 'xuzhoufeng', 2)
#dobi xuzhoufeng 2

上例中,函數有三個位置參數,咱們在調用中在相應位置傳遞對應值便可,而 keyword-only arguments 其形式是這樣子的:函數

def dog(name, host, *, age):
    print(name, host, age)

參數中有一個 「*」 號,在該符號以後的全部參數(可一至多個)均被稱爲強制關鍵字參數,若是按照位置參數的方式對這些參數傳值:ui

dog('dobi', 'xuzhoufeng', 2)
#TypeError: dog() takes 2 positional arguments but 3 were given

就會出現 TypeError,正確的傳值形式爲:code

dog('dobi', 'xuzhoufeng', age = 2)
#dobi xuzhoufeng 2

也即這裏的age 必須使用關鍵字參數的形式進行傳值。get

另外 keyword-only arguments 還須要注意與列表參數進行區分,列表參數的 "*" 號是緊跟參數的,而非獨佔一個位置,且列表參數能夠傳零至多個值:it

def dog(name, host, *age):
    print(name, host, age)

dog('dobi', 'xuzhoufeng')
#dobi xuzhoufeng

但強制性關鍵字參數在傳值時不能夠缺省(除非其有默認值),且必須使用關鍵字賦值:io

dog('dobi', 'xuzhoufeng')
#TypeError: dog() missing 1 required keyword-only argument: 'age'

def dog(name, host, *, age = 2):
    print(name, host, age)

dog('dobi', 'xizhoufeng')
#dobi xuzhoufeng

參考:require

PEP 3102word

相關文章
相關標籤/搜索