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使用正则表达式检测密码强度源码分享
Jun 11 Python
python套接字流重定向实例汇总
Mar 03 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
python使用标准库根据进程名如何获取进程的pid详解
Oct 31 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python中super函数用法实例分析
Mar 18 Python
python SVD压缩图像的实现代码
Nov 05 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
 python中的元类metaclass详情
May 30 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
大师制作的中短波矿石收音机
2020/04/02 无线电
建立文件交换功能的脚本(三)
2006/10/09 PHP
利用 window_onload 实现select默认选择
2006/10/09 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
推荐20家国外的脚本下载网站
2011/04/28 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
$("").click与onclick的区别示例介绍
2014/09/25 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
实例说明Python中比较运算符的使用
2015/05/13 Python
python+Django+apache的配置方法详解
2016/06/01 Python
Python Logging 日志记录入门学习
2018/06/02 Python
Python docx库用法示例分析
2019/02/16 Python
Python缓存技术实现过程详解
2019/09/25 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
运动会广播稿200米
2014/01/27 职场文书
大学开学计划书
2014/04/30 职场文书
五月的鲜花活动方案
2014/08/21 职场文书
寒山寺导游词
2015/02/03 职场文书
二婚主持词
2015/06/30 职场文书
2016春季运动会前导词
2015/11/25 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书