Python函数中*args和**kwargs来传递变长参数的用法


Posted in Python onJanuary 26, 2016

单星号形式(*args)用来传递非命名键可变参数列表。双星号形式(**kwargs)用来传递键值可变参数列表。

下面的例子,传递了一个固定位置参数和两个变长参数。

def test_var_args(farg, *args):
  print "formal arg:", farg
  for arg in args:
    print "another arg:", arg

test_var_args(1, "two", 3)

结果如下:

formal arg: 1
another arg: two
another arg: 3

这个例子用来展示键值对形式的可变参数列表,一个固定参数和两个键值参数。

def test_var_kwargs(farg, **kwargs):
  print "formal arg:", farg
  for key in kwargs:
    print "another keyword arg: %s: %s" % (key, kwargs[key])

test_var_kwargs(farg=1, myarg2="two", myarg3=3)

执行结果:

formal arg: 1
another keyword arg: myarg2: two
another keyword arg: myarg3: 3

调用函数时,使用 *args and **kwargs

这种语法不仅仅是在函数定义的时候可以使用,调用函数的时候也可以使用

def test_var_args_call(arg1, arg2, arg3):
  print "arg1:", arg1
  print "arg2:", arg2
  print "arg3:", arg3

args = ("two", 3)
test_var_args_call(1, *args)

执行结果如下:

arg1: 1
arg2: two
arg3: 3

键值对方式:

def test_var_args_call(arg1, arg2, arg3):
  print "arg1:", arg1
  print "arg2:", arg2
  print "arg3:", arg3

kwargs = {"arg3": 3, "arg2": "two"}
test_var_args_call(1, **kwargs)

结果如下:

arg1: 1
arg2: two
arg3: 3
Python 相关文章推荐
Python判断变量是否为Json格式的字符串示例
May 03 Python
获取Django项目的全部url方法详解
Oct 26 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
python numpy元素的区间查找方法
Nov 14 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
Django Rest framework权限的详细用法
Jul 25 Python
Python实现上下文管理器的方法
Aug 07 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 Python
python中的编码知识整理汇总
Jan 26 #Python
在MAC上搭建python数据分析开发环境
Jan 26 #Python
python黑魔法之编码转换
Jan 25 #Python
Python编程中对文件和存储器的读写示例
Jan 25 #Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 #Python
详解Python验证码识别
Jan 25 #Python
Python网站验证码识别
Jan 25 #Python
You might like
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
详解Python的Django框架中的模版相关知识
2015/07/15 Python
python数据封装json格式数据
2018/03/04 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
大学生应聘自荐信
2013/10/11 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
python 离散点图画法的实现
2022/04/01 Python