基于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实现rsa算法代码
Feb 17 Python
Python连接DB2数据库
Aug 27 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
Windows系统下PhantomJS的安装和基本用法
Oct 21 Python
python根据url地址下载小文件的实例
Dec 18 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
python检测IP地址变化并触发事件
Dec 26 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
Django权限设置及验证方式
May 13 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
python的变量和简单数字类型详解
Sep 15 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
各种战术和打法的原创者
2020/03/04 星际争霸
关于php循环跳出的问题
2013/07/01 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python功能键的读取方法
2015/05/28 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
工程力学硕士生的自我评价范文
2013/11/16 职场文书
高中生学习生活的自我评价
2013/11/27 职场文书
绩效专员岗位职责
2013/12/02 职场文书
毕业生求职自荐信怎么写
2014/01/08 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
经济类毕业生求职信
2014/06/26 职场文书
股东合作协议书
2014/09/12 职场文书
检讨书范文500字
2015/01/28 职场文书
2015年科协工作总结
2015/05/19 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript