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复制目录结构脚本代码分享
Mar 06 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
mac PyCharm添加Python解释器及添加package路径的方法
Oct 29 Python
Python 的AES加密与解密实现
Jul 09 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Python搭建HTTP服务过程图解
Dec 14 Python
Python3.9又更新了:dict内置新功能
Feb 28 Python
浅谈python 类方法/静态方法
Sep 18 Python
Python中random模块常用方法的使用教程
Oct 04 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
利用Python多线程实现图片下载器
Mar 25 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实现jQuery扩展函数
2009/10/30 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
一个入门级python爬虫教程详解
2021/01/27 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
美术专业学生个人自我评价
2013/09/19 职场文书
初一地理教学反思
2014/01/16 职场文书
作文评语集锦大全
2014/04/23 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
公司保洁员管理制度
2015/08/04 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers