第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Python 是否支持默認(rèn)關(guān)鍵字和默認(rèn)可變長(zhǎng)度參數(shù)?

Python 是否支持默認(rèn)關(guān)鍵字和默認(rèn)可變長(zhǎng)度參數(shù)?

慕田峪9158850 2021-10-12 16:17:11
我知道 Python 支持可變參數(shù)*args和關(guān)鍵字參數(shù),**kwargs但是有沒有辦法為這些字段設(shè)置默認(rèn)值?如果不是,為什么?*args = (1,'v')) , **kwargs = {'a':20}我并不是說我有一個(gè)用例,但似乎也沒有理由禁止這樣做。我確實(shí)理解通過檢查 empty 來解決這個(gè)問題是微不足道的args。
查看完整描述

2 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

不,*args并且**kwargs是接收任何沒有顯式參數(shù)的參數(shù)的全部參數(shù)。指定默認(rèn)值違背了它們的目的。相反,您的示例默認(rèn)值可以使用現(xiàn)有語法處理,無需在此處使函數(shù)定義語法復(fù)雜化。

您可以通過指定普通關(guān)鍵字參數(shù)來覆蓋默認(rèn)值:

def foo(pos0, pos1='v', a=20, *args, **kwargs):
    pass

(1, 'v')用另一個(gè)關(guān)鍵字參數(shù)替換了您的“默認(rèn)”,因?yàn)槟梢允褂?em>位置參數(shù)為關(guān)鍵字參數(shù)提供值;foo(42, 'spam')將設(shè)置pos1'spam'.

此外,您始終可以在您定義的函數(shù)內(nèi)部進(jìn)行進(jìn)一步處理;該args值是一個(gè)元組,只需測(cè)試長(zhǎng)度以檢查是否需要對(duì)缺失值使用默認(rèn)值。kwargs是字典,只需使用kwargs.get(key, default)kwargs.pop(key, default)if key not in kwargs:或任何其他dict方法來處理丟失的鍵。


查看完整回答
反對(duì) 回復(fù) 2021-10-12
?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以使用默認(rèn)值kwargs并仍然使用splatla解壓縮**kwargs


def john(name, dog, *args, bob="bob", **kwargs):

  print(name, dog, bob)


# "ream" is an unpacked arg

john("john", 1, "ream") # john 1 bob


# jane is an unpacked kwarg

john("john", 1, "ream", jane="jane") # john 1 bob


john("john", 1, "ream", bob="jane") # john 1 jane

為 an 設(shè)置默認(rèn)值*arg非常困難,因?yàn)槠湎敕ㄊ鞘购瘮?shù)需要該輸入。您可以在這種情況下查看一些技巧,例如range內(nèi)置函數(shù)的實(shí)現(xiàn)。我只是讓它成為一個(gè)kwarg雖然。


查看完整回答
反對(duì) 回復(fù) 2021-10-12
  • 2 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)