博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的*args和**kwargs
阅读量:6986 次
发布时间:2019-06-27

本文共 869 字,大约阅读时间需要 2 分钟。

先来看一个例子:

1 >>> def foo(*args, **kwargs): 2     print 'args =', args 3     print 'kwargs = ', kwargs 4     print '-----------------------' 5  6      7 >>> if __name__ == '__main__': 8     foo(1, 2, 3, 4) 9     foo(a=1, b=2, c=3)10     foo(1,2,3,4, a=1, b=2, c=3)11     foo('a', 1, None, a=1, b='2', c=3)

其输出结果如下:

1 args = (1, 2, 3, 4) 2 kwargs =  {} 3 ----------------------- 4 args = () 5 kwargs =  {
'a': 1, 'c': 3, 'b': 2} 6 ----------------------- 7 args = (1, 2, 3, 4) 8 kwargs = {
'a': 1, 'c': 3, 'b': 2} 9 -----------------------10 args = ('a', 1, None)11 kwargs = {
'a': 1, 'c': 3, 'b': '2'}12 -----------------------

  从以上例子可以看出,这两个是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”。如同所示:

参考:

转载地址:http://anmpl.baihongyu.com/

你可能感兴趣的文章
redis(一)
查看>>
vue操作,显示数据
查看>>
在Castle中使用nhibernate
查看>>
css文件的MIME错误引发的Jquery Mobile绘制错误
查看>>
ant+jmeter中build.xml配置详解
查看>>
一诺千金
查看>>
Python3.5在Windows7环境下Scrapy库的安装
查看>>
类继承
查看>>
【下一代核心技术DevOps】:(三)私有代码库阿里云Git使用
查看>>
sql语句中开窗函数的使用
查看>>
web基础
查看>>
重提URL Rewrite(3):在URL Rewrite后保持PostBack地址(转老赵blog)
查看>>
详解:Linux Chrony 设置服务器集群同步时间
查看>>
集合和特殊集合的类
查看>>
filter(HTML)滤镜用法
查看>>
vscode 配置php
查看>>
黑色帽子
查看>>
项目实战4—HAProxy实现高级负载均衡实战和ACL控制
查看>>
常见文件、目录、路径操作函数
查看>>
ShellExecute, WinExec, CreateProcess区别
查看>>