Python开发 基礎知識 2.變量 ( *arg, **kwargs )
變量 *args
和 **kwargs ( *和**為本體,名稱為通俗的名稱約定 )
*args 用於函式定義。 可將不定數量的參數傳遞給一個函數,傳入函式的引數,會先以Tuple物件收集,再設定給參數
def test_var_args(f_arg, *arg): print("first normal arg:", f_arg) for arg1 in arg: print("another arg through *argv:", arg1) test_var_args('yasoob', 'python', 'eggs', 'test')
first normal arg: yasoob
another arg through *argv: python
another arg through *argv: eggs
another arg through *argv: test
若有自訂的tuple引數集,可直接以 函數(*引數集名稱) 代入
def sum3(a, b, c):
return a + b + c
numbers = (1, 2, 3)
print(sum3(*numbers))
**kwargs 可以將關鍵字引數收集在dict物件中,適合處裡帶名的參數
當一個函式所需要的參數個數很多時,可以使用這個方式
def dosome(**kwargs): print(kwargs)
dosome(name = 'Justin', passwd = 123456, job = '?')
{'passwd': 123456, 'job': '?', 'name': 'Justin'}
如果函式參數個數固定,也可傳給函式自訂的字典物件,直接以 函數(**引入字典集),則Python會依字典物件的key,將值指定給對應名稱的參數
def sum3(a, b, c): return a + b + c args = {'a' : 1, 'b' : 2, 'c' : 3} print(sum3(**kwargs))
亦可以在一個函式中,同時使用*與**,會自動分類
def some(*arg1,**kwargs):
print(arg1)
print(arg2)
>>> some(1, 2, 3)
(1, 2, 3)
{}
>>> some(a = 1, b = 22, c = 3)
()
{'a': 1, 'c': 3, 'b': 22}
>>> some(2, a = 1, b = 22, c = 3)
(2,)
{'a': 1, 'c': 3, 'b': 22}