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