基于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 re正则表达式模块(Regular Expression)
Jul 16 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
python3 requests库文件上传与下载实现详解
Aug 22 Python
python操作gitlab API过程解析
Dec 27 Python
Python模块_PyLibTiff读取tif文件的实例
Jan 13 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
Python调用Redis的示例代码
Nov 24 Python
基于Django快速集成Echarts代码示例
Dec 01 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的FTP学习(一)
2006/10/09 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
PHP源码之explode使用说明
2011/08/05 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
JavaScript window.location对象
2014/11/14 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
jquery实现吸顶导航效果
2020/01/08 jQuery
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
import的本质解析
2017/10/30 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python中数据库like模糊查询方式
2020/03/02 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
二手房购房协议书范本
2014/10/05 职场文书
小学英语复习计划
2015/01/19 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书