用實例說明python的*args和**kwargs用法
先來看一個例子:
>>> def foo(*args, **kwargs):
print 'args =', args
print 'kwargs = ', kwargs
print '-----------------------'
>>> if __name__ == '__main__':
foo(1, 2, 3, 4)
foo(a=1, b=2, c=3)
foo(1,2,3,4, a=1, b=2, c=3)
foo('a', 1, None, a=1, b='2', c=3)
其輸出結(jié)果如下:
args = (1, 2, 3, 4)
kwargs = {}
-----------------------
args = ()
kwargs = {'a': 1, 'c': 3, 'b': 2}
-----------------------
args = (1, 2, 3, 4)
kwargs = {'a': 1, 'c': 3, 'b': 2}
-----------------------
args = ('a', 1, None)
kwargs = {'a': 1, 'c': 3, 'b': '2'}
-----------------------
從以上例子可以看出,這兩個是python中的可變參數(shù)。*args表示任何多個無名參數(shù),它是一個tuple;**kwargs表示關(guān)鍵字參數(shù),它是一個 dict。并且同時使用*args和**kwargs時,*args參數(shù)列必須要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )這樣調(diào)用的話,會提示語法錯誤“SyntaxError: non-keyword arg after keyword arg”。如同所示:
相關(guān)文章
在windows下使用python進(jìn)行串口通訊的方法
今天小編就為大家分享一篇在windows下使用python進(jìn)行串口通訊的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07python中urllib.request和requests的使用及區(qū)別詳解
這篇文章主要介紹了python中urllib.request和requests的使用及區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python基于React-Dropzone實現(xiàn)上傳組件的示例代碼
本文主要介紹了在React-Flask框架上開發(fā)上傳組件的技巧。文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08OpenCV學(xué)習(xí)之圖像形態(tài)學(xué)處理詳解
這篇文章主要為大家詳細(xì)介紹了OpenCV中圖像形態(tài)學(xué)處理的相關(guān)知識,例如:腐蝕操作、膨脹操作、開閉運算、梯度運算、Top Hat Black Hat運算等操作,需要的可以參考一下2023-02-02Python中使用Queue和Condition進(jìn)行線程同步的方法
這篇文章主要介紹了Python中使用Queue模塊和Condition對象進(jìn)行線程同步的方法,配合threading模塊下的線程編程進(jìn)行操作的實例,需要的朋友可以參考下2016-01-01基于SQLAlchemy實現(xiàn)操作MySQL并執(zhí)行原生sql語句
這篇文章主要介紹了基于SQLAlchemy實現(xiàn)操作MySQL并執(zhí)行原生sql語句,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06python基于mysql實現(xiàn)的簡單隊列以及跨進(jìn)程鎖實例詳解
這篇文章主要介紹了python基于mysql實現(xiàn)的簡單隊列以及跨進(jìn)程鎖,需要的朋友可以參考下2014-07-07jupyter notebook保存文件默認(rèn)路徑更改方法匯總(親測可以)
安裝Anaconda后,新建文件的默認(rèn)存儲路徑一般在C系統(tǒng)盤,那么路徑是什么呢?如何更改jupyter notebook保存文件默認(rèn)路徑呢?今天小編就這一問題通過兩種方法給大家講解,需要的朋友跟隨小編一起看看吧2021-06-06