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


'''
例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('-----------------')

基本上也就這么多了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM