不定長參數的裝包與拆包
阿新 • • 發佈:2018-09-10
rec 不定 pan 編寫 str 為什麽 int strong 需求
#轉載請聯系
def task(a,b,c,*args,**kwargs): print(a) print(b) print(c) print(args) print(kwargs) task(1,2,3,4,5,6,name="chichung",age=22) 輸出: 1 2 3 (4, 5, 6) {‘age‘: 22, ‘name‘: ‘chichung‘}
編寫函數時,如果沒辦法預計用戶傳入的參數有多少個,可以用裝包的方式。在進行數據的處理時,把包拆開,語法上就是把前面的*去掉。如果沒有把*去掉會出現什麽問題呢?
def task(a,b,c,*args,**kwargs):print(a) print(b) print(c) print(*args) # print(**kwargs) task(1,2,3,4,5,6,name="chichung",age=22) 輸出: 1 2 3 4 5 6 # 一個這樣的東西,沒有逗號
def task(a,b,c,*args,**kwargs): print(a) print(b) print(c) # print(*args) print(**kwargs) task(1,2,3,4,5,6,name="chichung",age 輸出:1 2 3 Traceback (most recent call last): File "/home/chichung/桌面/不定長參數的裝包與拆包.py", line 8, in <module> task(1,2,3,4,5,6,name="chichung",age=22) File "/home/chichung/桌面/不定長參數的裝包與拆包.py", line 6, in task print(**kwargs) TypeError: ‘age‘ is an invalid keyword argument for this function
至於為什麽去掉**kwargs的*會報錯呢?我暫時也不知道原因- -|
現在有一個需求,task()函數裏面還要再寫一個函數,而且這個函數也要接收和task()函數一模一樣的參數,怎麽該做呢?
很簡單
def task(a,b,c,*args,**kwargs): #task的代碼 task2(a,b,c,*args,**kwargs) # 註意是有*號的。 def task2(a,b,c,*args,**kwargs): #task2的代碼
不定長參數的裝包與拆包