基于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备份文件的脚本
Aug 11 Python
使用Python操作excel文件的实例代码
Oct 15 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
python利用socketserver实现并发套接字功能
Jan 26 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
python中验证码连通域分割的方法详解
Jun 04 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
python pillow库的基础使用教程
Jan 13 Python
pycharm进入时每次都是insert模式的解决方式
Feb 05 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中文汉字验证码
2007/04/08 PHP
PHP简单系统查询模块代码打包下载
2008/06/07 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
深入理解JavaScript定时机制
2010/10/29 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
java必学必会之static关键字
2015/12/03 Javascript
javascript基本算法汇总
2016/03/09 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python实时获取cmd的输出
2015/12/13 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
python爬取微博评论的实例讲解
2021/01/15 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
J2EE模式面试题
2016/10/11 面试题
促销活动方案模板
2014/02/24 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
个人委托书范本
2014/09/13 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
新生入学欢迎词
2015/01/26 职场文书
西安大雁塔导游词
2015/02/10 职场文书
挂职个人工作总结
2015/03/05 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS