国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

7.2 只接受關(guān)鍵字參數(shù)的函數(shù)

2018-02-24 15:26 更新

問題

你希望函數(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é)有一個這樣的例子。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號