用实例说明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代码真的很爽
Aug 26 Python
python进阶教程之循环对象
Aug 30 Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
python绘制多个曲线的折线图
Mar 23 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
python判断文件夹内是否存在指定后缀文件的实例
Jun 10 Python
使用Python OpenCV为CNN增加图像样本的实现
Jun 10 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
Python处理mysql特殊字符的问题
Mar 02 Python
python编写俄罗斯方块
Mar 13 Python
python如何进入交互模式
Jul 06 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 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
PHP中实现进程间通讯
2006/10/09 PHP
用PHP和ACCESS写聊天室(九)
2006/10/09 PHP
php allow_url_include的应用和解释
2010/04/22 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
Javascript基础教程之比较null和undefined值
2016/05/16 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
使用JS动态显示文本
2017/09/09 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
python列表操作实例
2015/01/14 Python
火车票抢票python代码公开揭秘!
2018/03/08 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
详解Python中的测试工具
2019/06/09 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
家长对孩子评语
2014/01/30 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
体检通知范文
2015/04/21 职场文书
python tkinter模块的简单使用
2021/04/07 Python
Python实现制作销售数据可视化看板详解
2021/11/27 Python