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