基于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 GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
Python中collections模块的基本使用教程
Dec 07 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
Python制作exe文件简单流程
Jan 24 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
在Python中使用turtle绘制多个同心圆示例
Nov 23 Python
python二维键值数组生成转json的例子
Dec 06 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
Scrapy实现模拟登录的示例代码
Feb 21 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开启gzip页面压缩实例代码
2010/03/11 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
javascript模拟php函数in_array
2015/04/27 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
JavaScript知识点整理
2015/12/09 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
vue内置指令详解
2018/04/03 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
儿童编程python入门
2018/05/08 Python
举例讲解Python常用模块
2019/03/08 Python
浅谈python3中input输入的使用
2019/08/02 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
vscode调试django项目的方法
2020/08/06 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
《陈涉世家》教学反思
2014/04/12 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书