python自定義函數中有兩中不定長參數,第一種是*name,第二種是**name。加了星號 * 的參數會以元組(tuple)的形式導入,存放所有未命名的變量參數。加了兩個星號 ** 的參數會以字典的形式導入。
第一種形式的不定長參數,在傳入額外的參數時可以不用指明參數名,直接傳入參數值即可,第二種因爲返回的是字典,所以傳入時需要指定參數名。
兩個簡單例子:
*name 形式:
>>> def test(a,b,*args):
... print(a)
... print(b)
... print(args)
...
>>> test(1,2,3,4,5)
1
2
(3, 4, 5)
>>>
前1和2這兩個數據傳給了a和b,而剩下的3,4,5三個數都以元祖的形式存在了args這個參數中,所以在第四行輸出args時,輸出的是個元組,當然也可以像訪問元組那樣輸出args中的某一個值,print(args[0])
**name 形式:
>>> def test2(a,b,**args):
... print(a)
... print(b)
... print(args)
...
>>> test2(1,2,m=3,n=4)
1
2
{'m': 3, 'n': 4}
>>>
可以看出,前1和2這兩個數據傳給了a和b,而 m 和 n 這兩個參數被以字典的形式存在的args中,輸出的是一個字典。