函數在定義中,透過在參數前加星號,將傳遞進來的多個參數轉換為一個對象,元組或字典,可以說是將這些參數值收集起來。
參數前加一個星號,表示將所有的值放在同一個元組中,該參數的回傳值是一個元組。
參數前加兩個星號,表示將所有的值放在同一個字典中,該參數的回傳值是一個字典。
>>> def print_param(x, y, z = 3, *pospar, **keypar): print x,y,z print pospar print keypar >>> print_param(3,4,5,6,7,8,m = 1,n = 2) 3 4 5 (6, 7, 8) {'m': 1, 'n': 2}
分配參數
函數在呼叫中,透過在參數前加星號,傳遞的參數必須是元組或字典,能夠將其值轉換為對應變數的值,而這個過程可以看做參數值的分配。
參數前加一個星號,表示將元組值指派給對應的函數參數值。
參數前加兩個星號,表示將字典中的值賦給鍵,函數的定義中要將鍵作為參數名稱。
>>> def add(x,y): print x,y return x + y >>> add(*param) 1 2 3 >>> def test(name,age): print name,age >>> m = {'name':'xiaoli','age':'12'} >>> test(**m) xiaoli 12 >>> m = {'name':'xiaoli','age':12} >>> test(**m) xiaoli 12