并不是必須寫(xiě)成 *args
和 **kwargs
敢朱。
只有變量前面的 *
(星號(hào))才是必須的沧奴。 你也可以寫(xiě)成*var
和**vars
归斤。而寫(xiě)成 *args
和**kwargs
只是一個(gè)通俗的命名約定蛹含。
*args
表示可變數(shù)量(≥0)的非鍵值對(duì)參數(shù)决左。(任意長(zhǎng)度的列表)
**kwargs
表示可變數(shù)量(≥0)的鍵值對(duì)(關(guān)鍵字)參數(shù)颜启。(任意長(zhǎng)度的字典)
用法:
1.可使用 *args
和 **kwargs
來(lái)定義函數(shù)
# 使用 *args 定義函數(shù)
def test_args_1(*args):
for arg in args:
print(arg)
test_args_1('ni','hao')
# test_args_1() 可傳入任意(≥0)個(gè)參數(shù)
# 使用 **kwargs 定義函數(shù)
def test_kwargs_1(**kwargs):
print(kwargs)
test_kwargs_1(ni='1', hao='2’)
# 可傳入任意(≥0)個(gè)鍵值對(duì)參數(shù)
2.可使用 *args 和 **kwargs 來(lái)調(diào)用函數(shù)
# 使用 *args 調(diào)用函數(shù)
def test_args_2(a,b,c):
print(a,b,c)
abc = [1,2,3]
test_args_2(*abc)
# 把列表以 *args 方式傳入函數(shù)
# 使用 **kwargs 調(diào)用函數(shù)
def test_kwargs_2(a,b,c):
print(a,b,c)
abc = {'c':1, 'b':2, 'a':3}
test_kwargs_2(**abc)
# 把列表以 **kwargs 方式傳入函數(shù)
# 輸出:
3 2 1
鳴謝:
怎樣使用*args 和 **kwargs - 《Python 進(jìn)階》
Use of *args and **kwargs - stackoverflow
函數(shù)的參數(shù) - 廖雪峰
理解 Python 中的 *args 和 **kwargs