Python代碼中func(*args, **kwargs)


這是Python函數可變參數 args及kwargs

*args表示任何多個無名參數,它是一個tuple

**kwargs表示關鍵字參數,它是一個dict

 

測試代碼如下:

def foo(*args,**kwargs): print ('args=',args) print ('kwargs=',kwargs) print ('**********************') if __name__=='__main__': foo(1,2,3) foo(a=1,b=2,c=3) foo(1,2,3,a=1,b=2,c=3) foo(1,'b','c',a=1,b='b',c='c')

 

執行結果如下:

args= (1, 2, 3) kwargs= {} ********************** args= () kwargs= {'a': 1, 'b': 2, 'c': 3} ********************** args= (1, 2, 3) kwargs= {'a': 1, 'b': 2, 'c': 3} ********************** args= (1, 'b', 'c') kwargs= {'a': 1, 'b': 'b', 'c': 'c'} **********************

 

補充1:遇到一個很有意思的bug,在使用多線程threading時,標注的那一行的逗號不能去除(否則會報錯未傳參數),而如果傳遞的參數是兩個,則末尾的逗號可以去除。猜測這里的逗號起到表示該參數為tuple類型。

 

for item in items: t = threading.Thread(target=get_content, args=(item,))#,不能去除,會報錯
 t.start() # get_content(base_fq=item)

 

 

 

 

 參考鏈接:

https://zhidao.baidu.com/question/367559039025445444.html

雙參數案例:

https://gitee.com/bob1112/pythonPaChong/blob/master/get_comic.py

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM