基于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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
用Python展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
Python缩进和冒号详解
Jun 01 Python
Python 通过URL打开图片实例详解
Jun 01 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
python3实现随机数
Jun 25 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python调用matlab的m自定义函数方法
Feb 18 Python
python cv2截取不规则区域图片实例
Dec 21 Python
TensorFlow 显存使用机制详解
Feb 03 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 Python
python字典进行运算原理及实例分享
Aug 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
PHP_Flame(Version:Progress)的原代码
2006/10/09 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
js实现右键菜单功能
2016/11/28 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
Python AES加密实例解析
2018/01/18 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
python输入错误后删除的方法
2019/10/12 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
python实现简单井字棋小游戏
2020/03/05 Python
Pycharm修改python路径过程图解
2020/05/22 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
python操作toml文件的示例代码
2020/11/27 Python
python中温度单位转换的实例方法
2020/12/27 Python
Python实现疫情地图可视化
2021/02/05 Python
如何用SQL语句进行模糊查找
2015/09/25 面试题
尊师重教演讲稿
2014/09/04 职场文书
2016新年慰问信范文
2015/03/25 职场文书
工作失职自我检讨书
2015/05/05 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android