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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
Python中几种操作字符串的方法的介绍
Apr 09 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
Python字典简介以及用法详解
Nov 15 Python
Python生成随机数组的方法小结
Apr 15 Python
浅谈function(函数)中的动态参数
Apr 30 Python
python 全局变量的import机制介绍
Sep 07 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
flask开启多线程的具体方法
Aug 02 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
AJAX的使用方法详解
2017/04/29 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
在vue中封装可复用的组件方法
2018/03/01 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
python绘制分布折线图的示例
2020/09/24 Python
python绘制雷达图实例讲解
2021/01/03 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
妇产医师自荐信
2014/01/29 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
我的中国梦口号
2014/06/16 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2016银行求职自荐信
2016/01/28 职场文书