基于Python 中函数的 收集参数 机制


Posted in Python onDecember 21, 2019

定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数。返回结果是一个元组。

传递零个参数时函数并不报错,而是返回一个空元组。但以上这种方法也有局限性,它不能收集关键字参数。

对关键字参数进行收集的另一种 收集参数 机制:使用两个星号 ( ** ) ,用法同上。最后返回一个以参数名为键、参数值为键值的字典。

* 和 ** 是可以一起使用的,返回特定的结果。

参数收集的用处之一是使我们编写函数时不用头疼将 N 多个参数都塞在一个括号里,既美观又省事。用处之二便是:

* :可以将一系列值存放进一个元组变量里,可用该元组变量名加一个 * 号作为参数传递给一个正被调用的函数,而后该函数就可以自由地对这些值进行一系列合法的操作。

** :同理,只不过变量存放的方式是字典。

def foo(*param):
 print(param)
 
def foo_1(**param):
 print(param)
def foo_2(*param1, **param2):
 print(param1)
 print(param2)
 
if __name__ == '__main__':
 foo(1,2,3,4) # (1, 2, 3, 4)
 
 foo_1(a = 1, b=2, c=3, d=4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
 
 foo_2(6,7,8, m = 9, n = 10) # (6, 7, 8) {'m': 9, 'n': 10}

Python的4种传值的方式,必选传参 func(param)、默认传参func(param=value)、可选传参func(*param)、关键字传参func(**param)

# 必选参数 func(param): # 1、定义函数时的参数个数,顺序已定义好,在调用函数调时的参数个数、顺序必须一致,不能多,也不能少,也不能乱(和之前的顺序一致),因此叫必选参数,这是最常用的传参方式

def test(param1,param2,param3):

print param1,param2,param3

test(1,"hello",True)

test(True,1,"hello")

执行结果:

1 hello True

True 1 hello

# 默认参数func(param=value): #

1、定义函数时,已为参数设定一个默认值,假如调用函数时不传参,在函数内部使用参数时的值则为默认值,传参时则和必选参数一样使用

# 2、如果必选参数和默认参数同时存在,则默认参数必须跟在必选参数后面

# 3、如果有多个默认参数,调用时顺序可以不一致,但是必须要显式表明是哪个默认参数,例如 param2=100,但是建议统一按照函数定义的顺序进行使用

def test(param1,param2=100,param3=True):

print param1,param2,param3 test(1)

# 默认参数可以不传 test(1,"hello",False)

# 多个默认参数时,调用顺序一致 test(1,param3=False,param2="hello")

# 调用顺序也可以不一致

执行结果:

1 100 True

1 hello False

1 hello False

以上这篇基于Python 中函数的 收集参数 机制就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python写asp详细讲解
Dec 16 Python
python查找目录下指定扩展名的文件实例
Apr 01 Python
Python中的rfind()方法使用详解
May 19 Python
python计算时间差的方法
May 20 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 Python
Python CVXOPT模块安装及使用解析
Aug 01 Python
python异步编程 使用yield from过程解析
Sep 25 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
Python序列化与反序列化相关知识总结
Jun 08 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 #Python
python 类之间的参数传递方式
Dec 20 #Python
使用pyinstaller逆向.pyc文件
Dec 20 #Python
Python3 实现减少可调用对象的参数个数
Dec 20 #Python
python获取引用对象的个数方式
Dec 20 #Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 #Python
python 读写文件包含多种编码格式的解决方式
Dec 20 #Python
You might like
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
php PDO实现的事务回滚示例
2017/03/23 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
Javascript倒计时代码
2010/08/12 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Python实现Kmeans聚类算法
2020/06/10 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
售后求职信范文
2014/03/15 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
导游词之江南周庄
2019/12/06 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript