用实例说明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文件写入实例分析
Apr 08 Python
Python 爬虫的工具列表大全
Jan 31 Python
Django安装配置mysql的方法步骤
Oct 15 Python
Python实现Linux监控的方法
May 16 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
多个python文件调用logging模块报错误
Feb 12 Python
python实现横向拼接图片
Mar 23 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 Python
python中count函数知识点浅析
Dec 17 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性能的原理介绍
2012/09/05 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
广告语设计及教案
2014/03/21 职场文书
入股协议书
2014/04/14 职场文书
党支部特色活动方案
2014/08/20 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
加强作风建设心得体会
2014/10/22 职场文书
初中信息技术教学反思
2016/02/16 职场文书
python实现的web监控系统
2021/04/27 Python
Nginx实现负载均衡的项目实践
2022/03/18 Servers
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技