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 测试实现方法
Dec 24 Python
Python标准库与第三方库详解
Jul 22 Python
python&MongoDB爬取图书馆借阅记录
Feb 05 Python
深入浅析python定时杀进程
Jun 06 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
5分钟 Pipenv 上手指南
Dec 20 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
Python基于Serializer实现字段验证及序列化
Nov 04 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/06 咖啡文化
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
php文件缓存类汇总
2014/11/21 PHP
ECMAScript 基础知识
2007/06/29 Javascript
javascript web页面刷新的方法收集
2009/07/02 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
python sys模块sys.path使用方法示例
2013/12/04 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python实现的计算器功能示例
2018/04/26 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Django REST framework 分页的实现代码
2019/06/19 Python
python银行系统实现源码
2019/10/25 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
你常见到的runtime exception
2016/09/05 面试题
两只小狮子教学反思
2014/02/05 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
优秀党员事迹材料
2014/12/18 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
东京审判观后感
2015/06/01 职场文书
新学期感想
2015/08/10 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python