用实例说明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 22 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python操作Excel之xlsx文件
Mar 24 Python
django解决跨域请求的问题详解
Jan 20 Python
Python学习笔记之变量、自定义函数用法示例
May 28 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
Python如何将字符串转换为日期
Jul 31 Python
python3判断IP地址的方法
Mar 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
python基础教程之数字处理(math)模块详解
2014/03/25 Python
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
python中使用序列的方法
2015/08/03 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
工作业绩不及格检讨书
2014/10/28 职场文书
如何写辞职书
2015/02/26 职场文书
人代会简报
2015/07/21 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
《三国志》赏析
2019/08/27 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript