python函數參數*args, **kwargs其實很好區分

可變參數

args,kwargs只是默認變量名稱,翻譯一下就是列表參數和字典參數(key-word args),關鍵之處是這裏的*和**,這兩個都是可變參數。

在函數定義時使用可變參數

Python函數定義中的參數聲明一般有三種方式:

# 1. 顯示參數(瞎編的)
def func1(name, age):
    pass
# 調用方式:
func1('Lily', 12)
func1(name='Lily', age=12)
...
    
2. 列表參數 
def func2(*args):
    print(args)  # ['Lily', 12]
# 調用方式
func2('Lily', 12) # 不指定參數名,被解析爲列表參數

3. 字典參數
def func(**kwargs):
    print(args)  # {'name':'Lily', 'age':12}
# 調用方式
func1(name='Lily', age=12) # 指定參數名, 非顯示聲明的參數將被解析爲字典參數

在函數調用時使用可變參數

在上面我們定義的時候都是使用的固定參數,Python調用函數的時候也可以直接把列表或字典內的元素作爲參數(注意:是裏面的元素,而不是字典或列表本身)

例如,對於這個函數定義

def func1(name, age):
    pass

如果想要正確的傳入name和age兩個參數,對應的就可以用下面三種方式

# 基礎版本
func1('Lily', 12) 

# 列表參數版本
info_list = ['Lily', 12]
func1(*info_list)  # 將列表元素解析到對應位置的參數

# 字典參數版本
info_dict = {'name':'Lily', 'age':12}
func1(**info_dict) # 這個就不用解釋了吧

Python可變參數總結

在函數定義時使用可變參數,會將傳入的多餘的、沒有顯示聲明的參數放進列表(args)或字典(kwargs)。
在函數調用時使用可變參數,則是將列表、字典解析成函數顯示聲明的參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章