python基礎之引數*args,**kwargs
阿新 • • 發佈:2021-12-09
python基礎之引數*args,**kwargs
python中的引數是如何傳遞的?
# 將未拆包的資料進行傳參
def run(a,*args):
#第一個引數傳給了a
print(a)
# args是一個元組,裡面是2和3兩個引數
print(args)
# *args是將這個元組中的元素依次取出來
print("對args拆包:",*args)# *args 相當於 a,b = args
run(1,2,3)
得到的結果是:
1
(2, 3)
對args拆包: 2 3
也就是說其實args就是一個tuple,傳入的引數都會被當成tuple
還有一個其他用法
def func(*args,**kwargs): print(type(args),args,type(kwargs),kwargs) def func2(a,b,c,d): print(a,b,c,d) if 0 : func() print("得到的結果是<class 'tuple'> () <class 'dict'> {}") '''在python中,*arg與**kwargs用於函式定義時,均為可變引數,*arg表示任意多個無名引數, 型別為tuple;**kwargs表示關鍵字引數,為dict。''' #用法一 用於函式定義 if __name__ == "__main__": func(1,2,3,4,5,a=1,b=2,c=3) '''<class 'tuple'> (1, 2, 3, 4, 5) <class 'dict'> {'a': 1, 'b': 2, 'c': 3}''' '''使用時需將*arg放在**kwargs之前,否則會有“SyntaxError: non-keyword arg after keyword arg”的語法錯誤。''' #用法二 用於函式呼叫 text1 = (1,2,3,4) text2 = [1,2,3,4] text3 = {1,2,3,4} text4 = {'a':1,'b':2,'c':3,'d':4} func2(*text1),func2(*text2),func2(*text3),func2(**text4) ''' *會以單個元素的形式解包序列(如元組、列表、集合),使其成為獨立的引數。 **會以鍵值對的形式解包字典,使其成為獨立的關鍵字引數。 '''