基于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 random模块常用方法
Nov 03 Python
深入理解Python中字典的键的使用
Aug 19 Python
Fabric 应用案例
Aug 28 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
Python中int()函数的用法浅析
Oct 17 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
Flask搭建一个API服务器的步骤
May 28 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 上传功能实例代码
2010/04/13 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
遍历python字典几种方法总结(推荐)
2016/09/11 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
python写一个md5解密器示例
2018/02/23 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
Python如何使用函数做字典的值
2019/11/30 Python
python ftplib模块使用代码实例
2019/12/31 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
工作表扬信的范文
2014/01/10 职场文书
优秀护士演讲稿
2014/04/30 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书