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 |