一、 不定長位置參數(shù)
# 在定義函數(shù)參數(shù)時(shí),可以在形參的前面加*,該形參將獲取所有的位置實(shí)參
# 它會(huì)將所有的實(shí)參保存在一個(gè)元組中
def fn(*args):
print("args=", args)
print("args type:", type(args))
# 帶*形參和其他參數(shù)配合使用
def fn1(a, b, *args):
print(a)
print(b)
print(args)
# 下面這兩種寫法可以,但是在傳實(shí)參的時(shí)候要注意
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__":
# 接收所有的位置參數(shù)
fn(1, 2, 3, 4, 5)
fn1(11, 12, 13, 14)
# fn2(21, 22, 23, 24) #這么傳會(huì)報(bào)錯(cuò)
fn2(21, 22, a=23, b=24)
# fn3(21, 22, 23, 24) #這么傳會(huì)報(bào)錯(cuò)
fn3(21, 22, 23, b=24)
fn運(yùn)行 結(jié)果
fn1運(yùn)行結(jié)果
fn2運(yùn)行結(jié)果
fn3運(yùn)行結(jié)果
總結(jié):
1.帶*的形參只能有一個(gè),有多個(gè)會(huì)報(bào)錯(cuò),不能識(shí)別
2.帶*的形參可以和其他參數(shù)配合使用,比如和不帶星的
3.帶*的形參不一定要放在最后面,可以放在最前面,中間,最后。但是注意,帶星的參數(shù)后的所有參數(shù),必須以關(guān)鍵字參數(shù)的形式傳遞,否則會(huì)保錯(cuò)。
二、不定長關(guān)鍵字參數(shù)
# 帶*的形參只能接收位置參數(shù),關(guān)鍵字參數(shù)接收不能接收
# 如下會(huì)報(bào)錯(cuò),fn傳如下值是會(huì)報(bào)錯(cuò)的
def fn(*args):
print("args=", args)
print("args type:", type(args))
if __name__ == "__main__":
# 這樣傳會(huì)保存,args不能接收關(guān)鍵字參數(shù)
fn(1, 2, 3, 4, a=10)
運(yùn)行如下:
# **形參能接收關(guān)鍵字參數(shù)
# 它將接收的所有關(guān)鍵字參數(shù)統(tǒng)一保存在一個(gè)字典中
def fn4(**kwargs):
print("kwargs = ", kwargs)
print(type(kwargs))
if __name__ == "__main__":
fn4(a=1, b=2, c=3)
運(yùn)行結(jié)果:
總結(jié):
1.**形參只能有一個(gè),并且必須寫在所有參數(shù)的最后。
2.字典的key就是參數(shù)的名字,字典的value就是參數(shù)的值
到此這篇關(guān)于Python函數(shù)中的不定長參數(shù)相關(guān)知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)Python不定長參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python教程對(duì)函數(shù)中的參數(shù)進(jìn)行排序
- Python 類,對(duì)象,數(shù)據(jù)分類,函數(shù)參數(shù)傳遞詳解
- Python函數(shù)參數(shù)和注解的使用
- 詳解Python 函數(shù)參數(shù)的拆解
- Python函數(shù)參數(shù)定義及傳遞方式解析
- 關(guān)于Python函數(shù)參數(shù)的進(jìn)階用法