Python参数传递及收集机制原理解析


Posted in Python onJune 05, 2020

python参数传递时,主要有位置参数和关键字参数。

1. 位置参数:顾名思义,参数的位置顺序很重要,因为是直接根据位置赋值的。

def func1(a, b):
  print(a,b) # 位置参数,位置顺序很重要
func1(1,2)

Python参数传递及收集机制原理解析

2. 关键字参数:首先使得位置不那么重要了,毕竟参数一多,有些人记不住位置也很正常;其次更重要的是可以提供初始值。

def func2(c=1, d=2):
  print(c,d) # 关键字参数,1. 使得位置不那么重要;2. 可提供初始值
func2()  #使用初始值
func2(100,200) #关键字参数也可用位置参数的传递形式
func2(c=100,d=200) #变换位置
func2(d=200,c=200)

Python参数传递及收集机制原理解析

3. 位置参数和关键字参数混合时,位置参数必须全部在关键字参数的前面。

def func3(a, b, c=1):
  print(a,b,c) # 混合使用时,位置参数必须在前面,否则程序会不知道位置参数对应的值是什么
func3(1,2,100)
func3(1,2,c=100)

Python参数传递及收集机制原理解析

4. 通过单星号 '*',收集位置参数,形成元组,但使用的时候也是有序的。

p = (1,2,)
def func4(*para): # 存多个参数,位置参数收集形成元组
  print(para)
func4(*p)  #传递的也是元组形式
func4(*(1,2,))

Python参数传递及收集机制原理解析

5. 通过双星号 '**',收集关键字参数,形成字典

arg = {'c':1,'d':2}
def func5(**args): # 存多个参数,关键字参数收集形成字典
  print(args)
  print(args['c'])
func5(**arg)  #传递形式一
func5(**{'c':1,'d':2}) # 二,或者显式传递字典

Python参数传递及收集机制原理解析

6. 位置参数和单星号 '*' 收集参数的混合:单星号 '*' 表示收集没有对应位置参数的其他位置参数

def func6(a, b, *para): # 混合位置参数,*表示收集没有对应位置参数的其他位置参数,即从前排到后,多余的位置参数
  print(a,b)
  print('para:',para)
func6(1,2,3,4,5)

Python参数传递及收集机制原理解析

7. 关键字参数和双星号 '**' 收集参数的混合:同理双星号 '**' 表示收集没有对应关键字参数的其他关键字参数

def func7(c=1, d=2, **args): # 混合关键字参数,**表示收集没有对应关键字参数的其他关键字参数,即多余的关键字参数
  print(c,d)
  print('args:',args)
func7(1,d=2,e=3,f=4)

Python参数传递及收集机制原理解析

8. 位置参数、关键字参数混合单星号收集参数、双星号收集参数:

def func(a, b, c=1, d=2, *ee, **ff): #混合关键字参数和位置参数:*和** 分别收集多余的位置参数和关键字参数
  print(a,b,c,d)
  print(ee) #元组形式使用
  print(ff) #字典形式使用
# func(100,200,300,400,c=500,d=600,e=700,f=800) # TypeError: func() got multiple values for argument 'c',原因是关键字参数也可以按照位置参数传递形式赋值
func(100,200,c=500,d=600,e=700,f=800)
func(100,200,300,400,500,600,e=700,f=800) #从前到后多余的参数分别进入元组(单星号)和字典形式(双星号)

TypeError: func() got multiple values for argument:因为关键字参数也是可以像位置参数那样直接传递的。

Python参数传递及收集机制原理解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
Python中的推导式使用详解
Jun 03 Python
python Django批量导入不重复数据
Mar 25 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python爬虫文件下载图文教程
Dec 23 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
python操作cfg配置文件方式
Dec 22 Python
Python用input输入列表的实例代码
Feb 07 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
python playwright 自动等待和断言详解
Nov 27 Python
python如何进行矩阵运算
Jun 05 #Python
Opencv求取连通区域重心实例
Jun 04 #Python
Python中zip函数如何使用
Jun 04 #Python
Python中有几个关键字
Jun 04 #Python
Python如何转换字符串大小写
Jun 04 #Python
如何在Python对Excel进行读取
Jun 04 #Python
opencv 查找连通区域 最大面积实例
Jun 04 #Python
You might like
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python实现通过shelve修改对象实例
2014/09/26 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
python3 拼接字符串的7种方法
2018/09/12 Python
python中的句柄操作的方法示例
2019/06/20 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
html5与css3小应用
2013/04/03 HTML / CSS
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
小学三八妇女节活动方案
2014/03/16 职场文书
大学生找工作求职信
2014/07/09 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
小学体育课教学反思
2016/02/16 职场文书