如果要讓函數(shù)接受不同類(lèi)型的實(shí)參,必須在函數(shù)定義中將接納任意數(shù)量實(shí)參的形參放在最后。Python先匹配位置實(shí)參和關(guān)鍵字實(shí)參,再將余下的實(shí)參都收集到最后一個(gè)形參中。
白話下,任意數(shù)量的參數(shù)和固定格式的參數(shù)參數(shù)怎么組合呢?那首先解決少的,然后后面放任意數(shù)量參數(shù)。
例如,如果前面的函數(shù)還需要一個(gè)表示比薩尺寸的實(shí)參,必須將該形參放在形參*toppings的前面:
python大大的圖
我的圖
Python將收到的第一個(gè)值存儲(chǔ)在形參size中,并將其他的所有值都存儲(chǔ)在元組toppings中。在函數(shù)調(diào)用中,首先指定表示比薩尺寸的實(shí)參,然后根據(jù)需要指定任意數(shù)量的配料。
依據(jù)這個(gè)定義,*toppings能夠放進(jìn)size之后的所有參數(shù),如果在它后面再放一個(gè)形參,這個(gè)形參將無(wú)對(duì)應(yīng)值導(dǎo)致python報(bào)錯(cuò)
即使在*toppings后面的參數(shù)給了默認(rèn)值也不行。
這么看來(lái),帶星號(hào)的形參后面真的不適合放任何形參。