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 struct模块解析
Jun 12 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
利用Python暴力破解zip文件口令的方法详解
Dec 21 Python
python实现超简单的视频对象提取功能
Jun 04 Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 Python
Python设计模式之代理模式实例详解
Jan 19 Python
Python多项式回归的实现方法
Mar 11 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
基于Python fminunc 的替代方法
Feb 29 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
你需要掌握的20个Python常用技巧
Feb 28 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,js双版本
2012/09/25 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
Python的垃圾回收机制深入分析
2014/07/16 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
python中执行shell的两种方法总结
2017/01/10 Python
python和ruby,我选谁?
2017/09/13 Python
python3中sys.argv的实例用法
2020/04/24 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
电子商务专业学生职业生涯规划
2014/03/07 职场文书
质量保证书范本
2014/04/29 职场文书
娱乐节目策划方案
2014/06/10 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
财务工作个人总结
2015/02/27 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
催款通知书范文
2015/04/17 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏