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中生成器和yield语句的用法详解
Apr 17 Python
Python文件及目录操作实例详解
Jun 04 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
python字符串过滤性能比较5种方法
Jun 22 Python
深入理解Python中的*重复运算符
Oct 28 Python
Django Rest framework之认证的实现代码
Dec 17 Python
Python pandas库中的isnull()详解
Dec 26 Python
Python爬虫爬取、解析数据操作示例
Mar 27 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
Python实现播放和录制声音的功能
Aug 12 Python
python如何正确使用yield
May 21 Python
python文件与路径操作神器 pathlib
Apr 01 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
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
jupyter notebook清除输出方式
2020/04/10 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
CSS3的calc()做响应模式布局的实现方法
2017/09/06 HTML / CSS
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
公务员培训自我鉴定
2013/09/19 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2014年女职工工作总结
2014/11/27 职场文书