基于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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
Python 复平面绘图实例
Nov 21 Python
Python tkinter三种布局实例详解
Jan 06 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
Python 发送邮件方法总结
Aug 10 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
小程序实现多列选择器
2019/02/15 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
多版本Python共存的配置方法
2017/05/22 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
python读取指定字节长度的文本方法
2019/08/27 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
介绍一下Make? 为什么使用make
2016/07/31 面试题
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
毕业自荐信
2013/12/16 职场文书
档案接收函
2014/01/13 职场文书
2014个人年度工作总结
2014/12/15 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
离婚答辩状范文
2015/05/22 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers
python数字图像处理:图像简单滤波
2022/06/28 Python