用实例说明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 27 Python
python爬取淘宝商品详情页数据
Feb 23 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
Python 动态导入对象,importlib.import_module()的使用方法
Aug 28 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
如何验证python安装成功
Jul 06 Python
Python实现自动签到脚本的示例代码
Aug 19 Python
Python request中文乱码问题解决方案
Sep 17 Python
用Python selenium实现淘宝抢单机器人
Jun 18 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
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
2018/05/28 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
javascript 函数式编程
2007/08/16 Javascript
js 方法实现返回多个数据的代码
2009/04/30 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
python 字典(dict)按键和值排序
2016/06/28 Python
Django REST framework视图的用法
2019/01/16 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
自我评价200字分享
2013/12/17 职场文书
自我鉴定注意事项
2014/01/19 职场文书
二年级小学生评语
2014/04/21 职场文书
单方投资意向书
2015/05/11 职场文书
获奖感言一句话
2015/07/31 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
python字符串的多行输出的实例详解
2021/06/08 Python