基于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中使用gzip模块压缩文件的简单教程
Apr 08 Python
Python爬取三国演义的实现方法
Sep 12 Python
python访问抓取网页常用命令总结
Apr 11 Python
Python如何生成树形图案
Jan 03 Python
Python操作Sonqube API获取检测结果并打印过程解析
Nov 27 Python
pytorch sampler对数据进行采样的实现
Dec 31 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
python实现人脸签到系统
Apr 13 Python
Python闭包装饰器使用方法汇总
Jun 29 Python
python中not、and和or的优先级与详细用法介绍
Nov 03 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
python产生模拟数据faker库的使用详解
Nov 04 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的返回引用和局部静态变量
2015/06/04 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Python SQLite3简介
2018/02/22 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Python reduce函数作用及实例解析
2020/05/08 Python
python打开音乐文件的实例方法
2020/07/21 Python
医务工作者先进事迹材料
2014/01/26 职场文书
个人投资计划书
2014/05/01 职场文书
活动总结模板
2014/05/09 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
2014年工程工作总结
2014/11/25 职场文书
加薪申请报告范本
2015/05/15 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis
Python创建SQL数据库流程逐步讲解
2022/09/23 Python