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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
Python实现动态循环输出文字功能
May 07 Python
解决pip install psycopg2出错问题
Jul 09 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 Python
解析python中的jsonpath 提取器
Jan 18 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php获取url参数方法总结
2014/11/13 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
python日志模块logbook使用方法
2019/09/19 Python
python 实现list或string按指定分段
2019/12/25 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
python解释器安装教程的方法步骤
2020/07/02 Python
python 读取串口数据的示例
2020/11/09 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
请说出以下代码输出什么
2013/08/30 面试题
小学语文课后反思精选
2014/04/25 职场文书
银行授权委托书范本
2014/10/04 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫