详解Python函数可变参数定义及其参数传递方式


Posted in Python onAugust 02, 2017

Python函数可变参数定义及其参数传递方式详解

python中 函数不定参数的定义形式如下

1、 func(*args) 

传入的参数为以元组形式存在args中,如:

def func(*args): 
  print args 
 
>>> func(1,2,3) 
(1, 2, 3) 
 
>>> func(*[1,2,3])  #这个方式可以直接将一个列表的所有元素当作不定参数 
传入(1, 2, 3)

2、func( **kwargs)

传入的参数为以字典形式存在args中,如:

def func(**kwargs): 
  print kwargs 
 
>>> func(a = 1,b = 2, c = 3) 
{'a': 1, 'c': 3, 'b': 2} 
 
>>> func(**{'a':1, 'b':2, 'c':3})   #这个方式可以直接将一个字典的所有键值对当作关键字参数传入 
{'a': 1, 'c': 3, 'b': 2}

3、也可以两者混用func(*args, **kwargs)

传入的顺序必须和定义顺序相同,这里是先不定参数列表,再是关键字参数字典,如:

def func(*args, **kwargs): 
  print args 
  print kwargs 
 
 
>>> func(1,2,3) 
(1, 2, 3) 
{} 
 
>>> func(*[1,2,3]) 
(1, 2, 3) 
{} 
 
>>> func(a = 1, b = 2, c = 3) 
() 
{'a': 1, 'c': 3, 'b': 2} 
 
>>> func(**{'a':1, 'b':2, 'c':3}) 
() 
{'a': 1, 'c': 3, 'b': 2} 
 
 
>>> func(1,2,3, a = 4, b=5, c=6) 
(1, 2, 3) 
{'a': 4, 'c': 6, 'b': 5}</span> 
 #这样跳跃传递是不行的 
>>> func(1,2,3, a=4, b=5, c=6, 7) 
SyntaxError: non-keyword arg after keyword arg

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
一篇不错的Python入门教程
Feb 08 Python
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
介绍Python中的文档测试模块
Apr 28 Python
python 写的一个爬虫程序源码
Feb 28 Python
python自带的http模块详解
Nov 06 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
python 切换root 执行命令的方法
Jan 19 Python
python多进程下的生产者和消费者模型
May 07 Python
使用numpngw和matplotlib生成png动画的示例代码
Jan 24 Python
详解Python import方法引入模块的实例
Aug 02 #Python
Python字符串拼接的几种方法整理
Aug 02 #Python
详解 Python 读写XML文件的实例
Aug 02 #Python
Python MD5加密实例详解
Aug 02 #Python
Python 获取当前所在目录的方法详解
Aug 02 #Python
浅谈python中的数字类型与处理工具
Aug 02 #Python
Python实现的快速排序算法详解
Aug 01 #Python
You might like
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
PHP加密解密函数详解
2015/10/28 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
StringBuilder和String的区别
2015/05/18 面试题
给同事的道歉信
2014/01/11 职场文书
小学课外活动总结
2014/07/09 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
检讨书范文大全
2015/05/07 职场文书