用实例说明python的*args和**kwargs用法


Posted in Python onNovember 01, 2013

先来看一个例子:

>>> 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 相关文章推荐
Python中实现结构相似的函数调用方法
Mar 10 Python
Python实现遍历数据库并获取key的值
May 17 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
Python登录系统界面实现详解
Jun 25 Python
django如何通过类视图使用装饰器
Jul 24 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 Python
python操作MongoDB基础知识
Nov 01 #Python
python操作MySQL数据库具体方法
Oct 28 #Python
Python sys.path详细介绍
Oct 17 #Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 #Python
python中 ? : 三元表达式的使用介绍
Oct 09 #Python
Python 文件和输入输出小结
Oct 09 #Python
Python 错误和异常小结
Oct 09 #Python
You might like
PHP4中实现动态代理
2006/10/09 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Python Merge函数原理及用法解析
2020/09/16 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
台湾母婴用品购物网站:Infant婴之房
2018/06/15 全球购物
人力资源本科毕业生求职信
2014/06/04 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
公司考勤管理制度
2015/08/04 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python