拆包

 1,首先看一個簡單的函數fun1


def fun1(name, age, *args, **kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)


fun1(10, 20, 30, 50, a=1, b=2)

其輸出結果想必都知道是什麼:

(結果)

 

2,再來看下面一個,在不看結果的情況下輸出結果你知道是什麼嗎

def fun1(name, age, *args, **kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)


def fun2(name, age, *args, **kwargs):
    fun1(name, age, args, kwargs)


fun2(10, 20, 30, 50, a=1, b=2)

下面就是輸出結果 

 (結果)

爲什麼會出現這個現象呢,下面我們來剖析一下

如何解決上面這種現象呢,那就是拆包

def fun1(name, age, *args, **kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)


def fun2(name, age, *args, **kwargs):
    fun1(name, age, *args, **kwargs)


fun2(10, 20, 30, 50, a=1, b=2)

(結果)

你能看出來代碼和上面未拆包之前哪裏不同嗎,就是在fun2調用fun1的時候在把args變成*args, 把kwargs變成**kwargs,這就是所謂的拆包,args前面加上*,那麼會將元組拆成30,50, kwargs前面加上**,會把字典拆成a=1,b=2,所以就會出現了我們上面看到的結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章