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

分享

Python中星號(hào)*和**的含義

 nxhujiee 2023-05-26 發(fā)布于寧夏

在python編程中經(jīng)常見(jiàn)到星號(hào)*和**,這里對(duì)其含義進(jìn)行介紹。

參考文章
https://blog.csdn.net/weixin_33988332/article/details/114943353
https://blog.csdn.net/weixin_39599046/article/details/109618212
【Python筆記】之Python函數(shù)中參數(shù)前帶*是什么意思

一,、普通含義

** 在python里面表示冪運(yùn)算

二、傳遞實(shí)參和定義形參

所謂實(shí)參就是調(diào)用函數(shù)時(shí)傳入的參數(shù),,形參則是定義函數(shù)是定義的參數(shù),。
這個(gè)操作類似于提取、解壓,。

1,、調(diào)用函數(shù)時(shí)使用*

test(*args),星號(hào)的作用其實(shí)就是把序列 args 中的每個(gè)元素,,當(dāng)作位置參數(shù)傳進(jìn)去,。比如test(*args)這個(gè)代碼,,如果 args 等于 (1,2,3) ,那么這個(gè)代碼就等價(jià)于 test(1, 2, 3) ,。

def foo(a,b):
    print(a)
    print(b)

args = [1,2]   #這里只能有兩個(gè)元素
foo(*args)

得到的結(jié)果為

1
2

2,、調(diào)用函數(shù)時(shí)使用**

test(**kwargs),雙星號(hào)的作用則是把字典 kwargs 變成關(guān)鍵字參數(shù)傳遞,。比如test(**kwargs)這個(gè)代碼,,如果 kwargs 等于 {“a”:1,“b”:2,“c”:3} ,那這個(gè)代碼就等價(jià)于 test(a=1,b=2,c=3) ,。

def foo(a,b):
    print(a)
    print(b)

kwargs = {'a':1,'b':2}   #這里只能是'a'和'b'
foo(**kwargs)

得到的結(jié)果為

1
2

三,、定義函數(shù)參數(shù)時(shí)使用

參數(shù)前面加上星號(hào) ,意味著參數(shù)的個(gè)數(shù)不止一個(gè),,另外帶一個(gè)星號(hào)參數(shù)的函數(shù)傳入的參數(shù)存儲(chǔ)為一個(gè)元組(tuple),,帶兩個(gè)星號(hào)則是表示字典(dict)。
參數(shù)帶星號(hào)表示支持可變不定數(shù)量的參數(shù),,這種方法叫參數(shù)收集,。
星號(hào)又可以帶1個(gè)或2個(gè),帶1個(gè)表示按位置來(lái)收集參數(shù),,帶2個(gè)星號(hào)表示按關(guān)鍵字來(lái)收集參數(shù),。

1、帶一個(gè)星號(hào)的參數(shù)收集模式

這種模式是在函數(shù)定義時(shí)在某個(gè)形參前面加一個(gè)星號(hào),,調(diào)用時(shí)按位置匹配不帶星號(hào)的形參和實(shí)參,,多余的實(shí)參都將作為一個(gè)元組的元素保存到星號(hào)對(duì)應(yīng)的形參中。

def test(*args):
	...

定義函數(shù)參數(shù)時(shí) * 的含義,,如這里 *args 表示把傳進(jìn)來(lái)的位置參數(shù)都裝在元組 args 里面,。比如說(shuō)上面這個(gè)函數(shù),調(diào)用 test(1, 2, 3) 的話,, args 的值就是 (1, 2, 3) ,。

示例如下:

def foo(a, b, c, *args):
    print("a = %s" % (a,))
    print("b = %s" % (b,))
    print("c = %s" % (c,))
    print(args)

foo("testa", "testb", "testc", "excess", "another_excess")

得到的結(jié)果為

a = testa
b = testb
c = testc
('excess’, 'another_excess’)

在這里,由于我們?cè)跍y(cè)試位置參數(shù),,多余的參數(shù)必須在末尾,,并且*args將它們打包成一個(gè)元組。

2,、帶兩個(gè)星號(hào)的參數(shù)收集模式:

帶一個(gè)星號(hào)的參數(shù)收集模式的收集參數(shù)不能收集關(guān)鍵字參數(shù)傳遞的實(shí)參,,要收集關(guān)鍵字參數(shù)傳遞的實(shí)參,需要在收集參數(shù)前使用兩個(gè)星號(hào),,此時(shí)收集參數(shù)對(duì)應(yīng)的是一個(gè)字典而不是元組,。

def test(**kwargs):
	...

類似的, ** 就是針對(duì)關(guān)鍵字參數(shù)和字典的了,。 調(diào)用 test(a=1,b=2,c=3) 的話,, kwargs 的值就是 {“a”:1,“b”:2,“c”:3} 了,。

普通的參數(shù)定義和傳遞方式和 * 們都可以和平共處,不過(guò)顯然 * 必須放在所有位置參數(shù)的最后,,而 ** 則必須放在所有關(guān)鍵字參數(shù)的最后,,否則就要產(chǎn)生歧義了。

示例如下:

def foo(a, b, c, **kwargs):
    print("a = %s" % (a,))
    print("b = %s" % (b,))
    print("c = %s" % (c,))
    print(args)

foo(a="testa", d="excess", c="testc", b="testb", k="another_excess")
foo("testa", "testc", "testb", d="excess", k="another_excess")

得到的結(jié)果為

a = testa
b = testb
c = testc
{'d’: 'excess’, 'k’: 'another_excess’}

a = testa
b = testc
c = testb
{'d’: 'excess’, 'k’: 'another_excess’}

也就是說(shuō),,在foo函數(shù)的簽名中只有參數(shù)a, b, c,。由于d和k不存在,它們被放入args字典,。

四,、綜合示例

例1

def foo(a,b,c,*args):
    print("a=%s" % (a,))
    print("b=%s" % (b,))
    print("c=%s" % (c,))
    print("args=%s" % (args,))

argtuple = ("testa","testb","testc","excess1","excess2")
foo(*argtuple)

得到的結(jié)果為

a=testa
b=testb
c=testc
args=('excess’,'excess2’)

例2

def foo(a,b,c,**args):
    print("a=%s" % (a,))
    print("b=%s" % (b,))
    print("c=%s" % (c,))
    print("args=%s" % (args,))

argdict = dict(a="testa", b="testb", c="testc", excessarg="string")
foo(**argdict)

得到的結(jié)果為

a=testa
b=testb
c=testc
args={'excessarg’: 'string’}

例3

def foo(a,b,*args,**kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

foo(1,2,3,4,e=5,f=6)

得到結(jié)果為

1
2
(3, 4)
{'e’: 5, 'f’: 6}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(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)論公約

    類似文章 更多