1. 程式人生 > >python *args **kwargs,傳入不固定的參數給函數,或者傳入很多的內容給函數,常用在構造函數中。

python *args **kwargs,傳入不固定的參數給函數,或者傳入很多的內容給函數,常用在構造函數中。

沒有 常用 但是 避免 內容 自動 基本 name 調用

‘‘‘
例1:展示*args的用法,傳入多個參數,不進行預先定義。
本例傳入了3個參數。沒有預先定義。在函數內自動生成元組()
‘‘‘
def q1(*args):
    print(例1)
    print(args)
    print(type(args))
    print(args[0])
t1 = 123
t2 = 234
t3 = 345
q1(t1, t2, t3)
print(-----------------)
‘‘‘
例2,和例1一樣,但是傳入字符串,元組,列表,都會在函數內生成元組()
註意引入參數時要有*號,
沒有星號,函數把你傳入的參數列表(元組,字符串)當作一個參數來處理。
有星號時,函數把你傳入的參數列表(元組,字符串)當作多個參數來處理,在函數內生成元組()
如最後一個調用q2(t3)
‘‘‘ def q2(*args): print(例2) print(args) print(type(args)) print(args[0]) t1 = 123,234,345 q2(*t1) t2 = (234,345,456) q2(*t2) t3=[345,456,567] q2(*t3) q2(t3) print(-----------------) ‘‘‘ 例3,本例展示使用**kwargs,傳入字典,函數內同樣還是字典。 ‘‘‘ def q3(**kwargs): print(例3) print(kwargs)
print(type(kwargs)) print(kwargs[name1]) di = { name1: jack, name2: rose, } q3(**di) print(-----------------) ‘‘‘ 例4:本例展示,函數定義時,可以同時使用*args,**kwargs來定義函數。 但是引用時,可以分開引用,只引用*args,或只引用**kwargs,暫時屏蔽函數內對元組和字典的使用,避免報錯。 ‘‘‘ def q4(*args,**kwargs): print(例4) print(args)
# print(args[0]) print(kwargs) # print(kwargs.get(‘name1‘)) t1 = 123,234,345 di = { name1: jack, name2: rose, } q4(*t1) print(---) q4(**di) print(-----------------) ‘‘‘ 例5,本例展示同時定義*args,**kwargs,並且同時使用。 ‘‘‘ def q5(*args,**kwargs): print(例5) print(args) print(args[0]) print(kwargs) print(kwargs.get(name1)) t1 = 123,234,345 di = { name1: jack, name2: rose, } q5(*t1,**di) print(-----------------) ‘‘‘ 例6,本例展示把*args,作為多余的參數傳入函數,也是看代碼經常看到的。 ‘‘‘ def q6(t1,t2,*args): print(例6) print(t1) print(t2) print(args) print(args[0]) t1 = 123,234,345 q6(t123,t234,*t1) print(-----------------) ‘‘‘ 例7,本例展示把**kwargs,作為多余的參數傳入函數,也是看代碼經常看到的。 ‘‘‘ def q7(k1,k2,**kwargs): print(例7) print(k1) print(k2) print(kwargs) print(kwargs.get(name1)) pass di = { name1: jack, name2: rose, } q7(k1=t123,k2=t234,**di) print(-----------------) ‘‘‘ 例8,本例展示把*args,**kwargs共同使用,作為多余的參數傳入函數,也是看代碼經常看到的。 除函數定義的k1,k2,又在引用時,加入了 ‘t345‘,k3=1, 結果 t123 (k1) t234 (k2) (‘t345‘, 123, 234, 345) (args) {‘k3‘: 1, ‘k4‘: 2, ‘name1‘: ‘jack‘, ‘name2‘: ‘rose‘} (kwargs) jack kwargs[‘name1‘] ‘‘‘ def q8(k1,k2,*args,**kwargs): print(例8 ) print(k1) print(k2) print(args) print(kwargs) print(kwargs.get(name1)) pass t1 = 123,234,345 di = { name1: jack, name2: rose, } q8(t123,t234,t345,k3=1,k4=2,*t1,**di) print(-----------------)

基本上也就這麽多了。

python *args **kwargs,傳入不固定的參數給函數,或者傳入很多的內容給函數,常用在構造函數中。