一、 不定長位置參數
# 在定義函數參數時,可以在形參的前面加*,該形參將獲取所有的位置實參
# 它會將所有的實參保存在一個元組中
def fn(*args):
print("args=", args)
print("args type:", type(args))
# 帶*形參和其他參數配合使用
def fn1(a, b, *args):
print(a)
print(b)
print(args)
# 下面這兩種寫法可以,但是在傳實參的時候要注意
def fn2(*args, a, b):
print(a)
print(b)
print(args)
def fn3(a, *args, b):
print(a)
print(args)
print(b)
if __name__ == "__main__":
# 接收所有的位置參數
fn(1, 2, 3, 4, 5)
fn1(11, 12, 13, 14)
# fn2(21, 22, 23, 24) #這么傳會報錯
fn2(21, 22, a=23, b=24)
# fn3(21, 22, 23, 24) #這么傳會報錯
fn3(21, 22, 23, b=24)
fn運行 結果

fn1運行結果

fn2運行結果

fn3運行結果

總結:
1.帶*的形參只能有一個,有多個會報錯,不能識別
2.帶*的形參可以和其他參數配合使用,比如和不帶星的
3.帶*的形參不一定要放在最后面,可以放在最前面,中間,最后。但是注意,帶星的參數后的所有參數,必須以關鍵字參數的形式傳遞,否則會保錯。
二、不定長關鍵字參數
# 帶*的形參只能接收位置參數,關鍵字參數接收不能接收
# 如下會報錯,fn傳如下值是會報錯的
def fn(*args):
print("args=", args)
print("args type:", type(args))
if __name__ == "__main__":
# 這樣傳會保存,args不能接收關鍵字參數
fn(1, 2, 3, 4, a=10)
運行如下:

# **形參能接收關鍵字參數
# 它將接收的所有關鍵字參數統一保存在一個字典中
def fn4(**kwargs):
print("kwargs = ", kwargs)
print(type(kwargs))
if __name__ == "__main__":
fn4(a=1, b=2, c=3)
運行結果:

總結:
1.**形參只能有一個,并且必須寫在所有參數的最后。
2.字典的key就是參數的名字,字典的value就是參數的值
到此這篇關于Python函數中的不定長參數相關知識總結的文章就介紹到這了,更多相關Python不定長參數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python教程對函數中的參數進行排序
- Python 類,對象,數據分類,函數參數傳遞詳解
- Python函數參數和注解的使用
- 詳解Python 函數參數的拆解
- Python函數參數定義及傳遞方式解析
- 關于Python函數參數的進階用法