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爬取淘宝商品详情页数据
Feb 23 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
Django之form组件自动校验数据实现
Jan 14 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
Django搭建项目实战与避坑细节详解
Dec 06 Python
python switch 实现多分支选择功能
Dec 21 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 Python
一篇文章弄懂Python中的内建函数
Aug 07 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字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
PHP中文编码小技巧
2014/12/25 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
帝国cms目录结构分享
2015/07/06 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
python django中8000端口被占用的解决
2019/12/17 Python
python绘制动态曲线教程
2020/02/24 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
大学生旷课检讨书
2014/01/22 职场文书
自主招生自荐信范文
2015/03/04 职场文书
工作会议通知
2015/04/15 职场文书
同事打架检讨书
2015/05/06 职场文书
python 模块重载的五种方法
2021/04/24 Python
php将xml转化对象的实例详解
2021/11/17 PHP
Python中第三方库Faker的使用详解
2022/04/02 Python
python和anaconda的区别
2022/05/06 Python