用实例说明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性能优化的20条建议
Oct 25 Python
python实现的系统实用log类实例
Jun 30 Python
python中的随机函数小结
Jan 27 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
Java多线程实现四种方式原理详解
Jun 02 Python
Django集成MongoDB实现过程解析
Dec 01 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
opencv python 对指针仪表读数识别的两种方式
Jan 14 Python
python unittest单元测试的步骤分析
Aug 02 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
js使用DOM操作实现简单留言板的方法
2015/04/10 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
python中列表的含义及用法
2020/05/26 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
《列夫托尔斯泰》教学反思
2014/02/10 职场文书
公开承诺书格式
2014/05/21 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
道歉的话怎么说
2015/05/12 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
netty 实现tomcat的示例代码
2022/06/05 Servers