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之print详解
Sep 28 Python
python实现定时播放mp3
Mar 29 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
浅谈python中get pass用法
Mar 19 Python
python__name__原理及用法详解
Nov 02 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
Python yield的用法实例分析
Mar 06 Python
Python使用re模块验证危险字符
May 21 Python
为什么称python为胶水语言
Jun 16 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
python 实时调取摄像头的示例代码
Nov 25 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上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
jQuery设置指定网页元素宽度和高度的方法
2015/03/25 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python map和reduce函数用法示例
2015/02/26 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python实现列表删除重复元素的三种常用方法分析
2017/11/24 Python
Python装饰器用法示例小结
2018/02/11 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python批量获取html内body内容的实例
2019/01/02 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
毕业证丢失证明范本
2014/09/20 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
努力工作保证书
2015/02/28 职场文书
python解析json数据
2022/04/29 Python