*args 不定参数,元组,如(1,2,n)**kwargs 传入键值对,字典(例如:num1=11,num2=22)先看示例1:
def test(a,b,c=3,*args):print(a)print(b)print(c)print(args)test(11,22,33,44,55)
输出值分别为:
112233(44,55)
也就是说args中保存的是没有利用的所有多余参数,保存方式为元组
再看示例2:
def test(a,b,c=3,*args1,**args2):print(a)print(b)print(c)print(args1)print(args2)test(11,22,33,dd=44,ee=55,ff=66)
输出结果为:
112233(){'dd':44, 'ee':55, 'ff':66}
即输入多余参数有变量名,就保存在args中保存,保存方式为字典
如果多余参数中既有*args类型,也有args类型,则分别保存
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)
输出结果如下:
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中的可变参数 。
args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个 dict 。并且同时使用args和kwargs时,必须*args参数列要在kwargs前,像foo(a=1, b=‘2’, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg” 。
【Python中*args、**args到底是什么、有啥区别、怎么用】
推荐阅读
- Xonsh Shell:在 Linux 终端结合 Bash Shell 和 Python 的最佳特性
- 在项目中使用的顶级 Java 部署工具
- Windows操作无法完成,因为文件已经在xxxx中打开,如何解决?
- 羡慕BI软件的可视化?Python终于可以做出联动可视化报告
- 宫颈粘黏症状
- 子宫肌瘤能吃蒲公英吗
- 痔疮便血会自己好吗
- 易武红茶存放时间
- 男性阴虚内热的症状有哪些?
- 尿道口发红