天天看點

函數的不定長參數                                                                   -------  知識無價,汗水有情,如需搬運請注明出處,謝謝!

# *args:位置參數,收內建元組
def func1(*args):
    print(args)
    for i in args:
        print(i)

func1('python', 28, 'man', 'meiguo')

# **kwargs :收集關鍵字參數,合并字典
def func2(**kwargs):
    print(kwargs)
    for key, value in kwargs.items():
        print(key)
        print(value)

func2(name='python', age=28, sex='man', weizhi='helan')


def fun(a, b, *args, **kwargs):
    """可變參數示範示例"""
    print("a =%d" % a)
    print("b =%d" % b)
    print("args:")
    print(args)
    print("kwargs: ")
    for key, value in kwargs.items():
        print("value=%s" % value)

print("-fu-"*10)
c = (3, 4, 5)
d = {"m": 6, "n": 7, "p": 8}  # 傳入元組和字典時應該注意加*号,如果不加就當做普通的不定長參數處理
fun(1, 2, *c, **d)  # 就算不定長形參也是元組,那麼會變成給實參的這個元組變成不定長形參的第一個位置
fun(1, 2, c, d)     # 生拉硬湊一個元組,加個逗号((),)這樣。,字典,必須要加雙*
                    # 是以以後給不定長形參傳入元組和字典一定記得*号
# 預設參數在*args後面
print('-fun-'*10)
def sum_nums_3(a, *args, b=22, c=33, **kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)

sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)
# 如果很多個值都是不定長參數,那麼這種情況下,可以将預設參數放到 *args的後面
# 但如果有**kwargs的話,**kwargs必須是最後的
# 加了星号(*)的變量args會存放所有未命名的變量參數,args為元組
# 而加**的變量kwargs會存放命名參數,即形如key=value的參數, kwargs為字典
      

  

                                                                   -------  知識無價,汗水有情,如需搬運請注明出處,謝謝!