python收集參數

最近學習python,看《Python基礎教程》(第2版),發現函數定義裏面有一個「收集參數」頗有趣。java

用戶定義函數時,能夠定義一個肯定參數數量的函數,如:python

>>> store(data, name1, name2, name3)

可是假如定義前不知道有多少個參數,該如何定義呢,C++和java中都有相應的解決方法,python中天然也有函數

def print_params(*params):
    print(params)

這裏參數前面加上了星號*,便是不肯定數量的參數,調用方式以下:學習

>>> print_params('Testing')
('Testing',)
>>> print_params(1, 2, 3)
(1, 2, 3)
>>> print_params()
()

從上面的三個例子能夠看出,使用*做爲不肯定數量參數,輸入參數爲元組類型spa

這種方法爲啥叫收集參數呢?由於它收集全部其他位置參數,這樣其實說明,它只能在參數末尾進行收集,而不能在開頭或者中間收集code

 

除了收集散列的參數,還能夠收集key-value字典類型的參數,例如:blog

def print_params_3(**params):
    print(params)

調用方式:教程

>>> print_params_3(x=1, y=2, z=3)
{'z': 3, 'x': 1, 'y': 2}

兩者一塊兒用:class

print_params_4(x, y, z=3, *pospar, **keypar):
    print(x, y, z)
    print(pospar)
    print(keypar)

調用方式;基礎

>>> print_params_4(1, 2, 3, 4, 5, 6, 7, foo=1, bar=2)
1 2 3
(5, 6, 7)
{'foo' : 1, 'bar' : 2}
>>> print_params_4(1,2)
1 2 3
()
{}

 

參數收集的逆過程:

函數參數使用*號收集獲得元組,使用**收集獲得字典,那麼反過來使用元組和字典能夠做爲函數參數

def add(x,y):
    return x+y>>> params = (1, 2)>>> add(*params)3
相關文章
相關標籤/搜索