久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python中的*args和**kwargs

 袁先森lemon 2021-05-22

在Python中的代碼中經(jīng)常會(huì)見到這兩個(gè)詞 args 和 kwargs,,前面通常還會(huì)加上一個(gè)或者兩個(gè)星號(hào)。其實(shí)這只是編程人員約定的變量名字,,args 是 arguments 的縮寫,,表示位置參數(shù);kwargs 是 keyword arguments 的縮寫,,表示關(guān)鍵字參數(shù),。這其實(shí)就是 Python 中可變參數(shù)的兩種形式,并且 *args 必須放在 **kwargs 的前面,,因?yàn)槲恢脜?shù)在關(guān)鍵字參數(shù)的前面,。

*args的用法

*args就是就是傳遞一個(gè)可變參數(shù)列表給函數(shù)實(shí)參,這個(gè)參數(shù)列表的數(shù)目未知,,甚至長度可以為0,。下面這段代碼演示了如何使用args

def test_args(first, *args):
    print('Required argument: ', first)
    print(type(args))
    for v in args:
        print ('Optional argument: ', v)

test_args(1, 2, 3, 4)

第一個(gè)參數(shù)是必須要傳入的參數(shù),所以使用了第一個(gè)形參,而后面三個(gè)參數(shù)則作為可變參數(shù)列表傳入了實(shí)參,,并且是作為元組tuple來使用的,。代碼的運(yùn)行結(jié)果如下

Required argument:  1
<class 'tuple'>
Optional argument:  2
Optional argument:  3
Optional argument:  4

**kwargs

而**kwargs則是將一個(gè)可變的關(guān)鍵字參數(shù)的字典傳給函數(shù)實(shí)參,同樣參數(shù)列表長度可以為0或?yàn)槠渌?。下面這段代碼演示了如何使用kwargs

def test_kwargs(first, *args, **kwargs):
   print('Required argument: ', first)
   print(type(kwargs))
   for v in args:
      print ('Optional argument (args): ', v)
   for k, v in kwargs.items():
      print ('Optional argument %s (kwargs): %s' % (k, v))

test_kwargs(1, 2, 3, 4, k1=5, k2=6)

正如前面所說的,,args類型是一個(gè)tuple,而kwargs則是一個(gè)字典dict,,并且args只能位于kwargs的前面,。代碼的運(yùn)行結(jié)果如下

Required argument:  1
<class 'dict'>
Optional argument (args):  2
Optional argument (args):  3
Optional argument (args):  4
Optional argument k2 (kwargs): 6
Optional argument k1 (kwargs): 5

調(diào)用函數(shù)

args和kwargs不僅可以在函數(shù)定義中使用,還可以在函數(shù)調(diào)用中使用,。在調(diào)用時(shí)使用就相當(dāng)于pack(打包)和unpack(解包),,類似于元組的打包和解包。

首先來看一下使用args來解包調(diào)用函數(shù)的代碼,,

def test_args_kwargs(arg1, arg2, arg3):
    print("arg1:", arg1)
    print("arg2:", arg2)
    print("arg3:", arg3)

args = ("two", 3, 5)
test_args_kwargs(*args)

#result:
arg1: two
arg2: 3
arg3: 5

將元組解包后傳給對(duì)應(yīng)的實(shí)參,,kwargs的用法與其類似。

kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
test_args_kwargs(**kwargs)

#result
arg1: 5
arg2: two
arg3: 3

args和kwargs組合起來可以傳入任意的參數(shù),,這在參數(shù)未知的情況下是很有效的,,同時(shí)加強(qiáng)了函數(shù)的可拓展性。

歡迎大家關(guān)注公眾號(hào)“計(jì)算機(jī)視覺與機(jī)器學(xué)習(xí)”


計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多