基于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中操作时间之mktime()方法的使用教程
May 22 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
python绘制简单彩虹图
Nov 19 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
python爬虫学习笔记之pyquery模块基本用法详解
Apr 09 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
python+playwright微软自动化工具的使用
Feb 02 Python
Python实现拼音转换
Jun 07 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中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
php日历制作代码分享
2014/01/20 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
js function使用心得
2010/05/10 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
js如何打印object对象
2015/10/16 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
JS实现li标签的删除
2019/04/12 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python写的服务监控程序实例
2015/01/31 Python
python使用mailbox打印电子邮件的方法
2015/04/30 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
Python循环语句中else的用法总结
2016/09/11 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
微信营销策划方案
2014/02/24 职场文书
化学教育专业自荐信
2014/07/04 职场文书
青年志愿者活动方案
2014/08/17 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
python3操作redis实现List列表实例
2021/08/04 Python
Python PIL按比例裁剪图片
2022/05/11 Python