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