W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你希望函數(shù)的某些參數(shù)強(qiáng)制使用關(guān)鍵字參數(shù)傳遞
將強(qiáng)制關(guān)鍵字參數(shù)放到某個(gè)參數(shù)或者當(dāng)個(gè)后面就能達(dá)到這種效果。比如:
def recv(maxsize, *, block):
'Receives a message'
pass
recv(1024, True) # TypeError
recv(1024, block=True) # Ok
利用這種技術(shù),我們還能在接受任意多個(gè)位置參數(shù)的函數(shù)中指定關(guān)鍵字參數(shù)。比如:
def mininum(*values, clip=None):
m = min(values)
if clip is not None:
m = clip if clip > m else m
return m
minimum(1, 5, 2, -5, 10) # Returns -5
minimum(1, 5, 2, -5, 10, clip=0) # Returns 0
很多情況下,使用強(qiáng)制關(guān)鍵字參數(shù)會(huì)比使用位置參數(shù)表意更加清晰,程序也更加具有可讀性。例如,考慮下如下一個(gè)函數(shù)調(diào)用:
msg = recv(1024, False)
如果調(diào)用者對(duì)recv函數(shù)并不是很熟悉,那他肯定不明白那個(gè)False參數(shù)到底來(lái)干嘛用的。但是,如果代碼變成下面這樣子的話就清楚多了:
msg = recv(1024, block=False)
另外,使用強(qiáng)制關(guān)鍵字參數(shù)也會(huì)比使用**kwargs參數(shù)更好,因?yàn)樵谑褂煤瘮?shù)help的時(shí)候輸出也會(huì)更容易理解:
>>> help(recv)
Help on function recv in module __main__:
recv(maxsize, *, block)
Receives a message
強(qiáng)制關(guān)鍵字參數(shù)在一些更高級(jí)場(chǎng)合同樣也很有用。例如,它們可以被用來(lái)在使用*args和**kwargs參數(shù)作為輸入的函數(shù)中插入?yún)?shù),9.11小節(jié)有一個(gè)這樣的例子。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: