標籤:

python基礎-*args和**kwargs

def foo(x,*args, **kwargs): print(x) print (args = , args) print(type(args)) print (kwargs = , kwargs) print(type(kwargs))foo(1,2,3,4, a=1,b=2,c=3)輸出:1args = (2, 3, 4)<class tuple>kwargs = {a: 1, c: 3, b: 2}<class dict>

一言以蔽之:*args將函數中多傳入的參數存放在一個tuple中,而**kwargs將多傳入的鍵值對存放在一個字典中。

註:

def foo(x,*a, **b): print(x) print (args = , a) print(type(a)) print (kwargs = , b) print(type(b))foo(1,2,3,4, a=1,b=2,c=3)輸出:1args = (2, 3, 4)<class tuple>kwargs = {a: 1, b: 2, c: 3}<class dict>

*, ** 後面不一定要用args,kwargs這只是約定俗成。這個表示該函數可以接受更多的輸入。

def foo(a,b,c): print(a) print(b) print(c)foo( **{a:1,b:2,c:3})輸出:123

這表示,我們不需要對foo一個一個的傳入值。而只需要傳入相對應的字典(必須要一模一樣,除非foo定義了默認值),此外字典中的鍵值要用引號。

當做裝飾器的時候,這可以代替指定的輸入變數,非常重要。

參考:

1,轉:Python: 什麼是*args和**kwargs

2,python函數--形參中的:*args和**kwargs - 白木瀟瀟夕 - 博客園

歡迎關注公眾號:huangxiaobai880

https://www.zhihu.com/video/956617389303984128
推薦閱讀:

Python爬蟲基礎總結
花式玩轉多維矩陣|入門這篇就夠了
Python Shell 中敲擊方向鍵顯示「^[[C^[[D」,原因是什麼?如何修復?
tornado 最近的4.0版本進行了較大的更新,這個大版本有哪些亮點?
PyQt5系列教程(10):老闆,這個打一下

TAG:Python |