不定長(zhǎng)參數(shù)定義:也叫可變參數(shù),用于不確定調(diào)用的時(shí)候會(huì)傳遞多少個(gè)參數(shù)(不傳參也可以)的場(chǎng)景
不定長(zhǎng)參數(shù)作用:當(dāng)調(diào)用函數(shù)不確定參數(shù)個(gè)數(shù)時(shí),可以使用不定長(zhǎng)參數(shù)
不定長(zhǎng)指的是參數(shù)的數(shù)量,數(shù)量可以是任意的
不定長(zhǎng)參數(shù)的類(lèi)型:
1.位置傳遞 (標(biāo)志性符號(hào)為:*? ?,格式*不定長(zhǎng)參數(shù)/形參)
2.關(guān)鍵字傳遞(標(biāo)志性符號(hào)為:**,格式**不定長(zhǎng)參數(shù)/形參)
def a(*b)? ? ? ? ? ? ? 帶上*,表明形參b它所接收的數(shù)量是無(wú)限的(數(shù)量可為單個(gè)也可以為多個(gè)),當(dāng)我們使用不定長(zhǎng)傳遞的時(shí)候,b這個(gè)形式參數(shù),就會(huì)默認(rèn)標(biāo)記為元組類(lèi)型,當(dāng)傳遞不定長(zhǎng)參數(shù)(傳實(shí)參)的時(shí)候,通常都會(huì)存儲(chǔ)到元組內(nèi)部(這一部分為原理,解釋作用),所以我們可以以元組的形式去調(diào)用,所以b也可以叫做元組。
b的實(shí)參可以為0個(gè),也可以為無(wú)限個(gè)。
帶個(gè)*,b形式參數(shù),b的實(shí)參為單個(gè)時(shí),調(diào)用函數(shù)的時(shí)候,就顯示一個(gè)值;b的實(shí)參為多個(gè)時(shí),調(diào)用函數(shù)的時(shí)候,就展示多個(gè)值,形參b的類(lèi)型就是以元組的形式存儲(chǔ)了
def a(*d):
? ? ? print(d)
a(1,2,3)
1,2,3
通過(guò)*得到的不定長(zhǎng),那么這種不定長(zhǎng)我們叫做位置傳遞
def a(**b)?
通過(guò)**得到的不定長(zhǎng),這種叫關(guān)鍵字傳遞,它的實(shí)參不受限制,可以一個(gè)也可以多個(gè),同時(shí)也必須滿足key=值的這種鍵值對(duì)的形式,傳實(shí)參的時(shí)候,按照要求:key=value這種方式傳遞(調(diào)用函數(shù),實(shí)參按照這種方式寫(xiě)代碼)。比如實(shí)參b("你好"=11),傳入的時(shí)候(調(diào)用函數(shù)),(形參b的類(lèi)型)就形成字典了。
def a(**d):
? ? ? ?print(d)
a(c="你好",e="我們")
{c="你好",e="我們"}
還有一種方式,通過(guò)字典的方式去定義:
def a(**d):
e={"你好"=22,"我們"=11}
a(**e)? ? ? ? ? ? ? ? ? ? ? ? ? #如果是以"e"字典的形式,那么調(diào)用的時(shí)候需要加上(**e),帶上**,說(shuō)明是解包的意思,這個(gè)是語(yǔ)法規(guī)則,也可以這么理解
{"你好"=22,"我們"=11}
12.19? 二