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设置windows桌面壁纸的实现代码
Jan 28 Python
Python利用ansible分发处理任务
Aug 04 Python
Python验证企业工商注册码
Oct 25 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
在pycharm中使用git版本管理以及同步github的方法
Jan 16 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
np.random.seed() 的使用详解
Jan 14 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
Django如何实现防止XSS攻击
Oct 13 Python
python Tornado框架的使用示例
Oct 19 Python
Python连续赋值需要注意的一些问题
Jun 03 Python
Python 绘制多因子柱状图
May 11 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+MySQL投票系统的设计和实现分享
2012/09/23 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
php多线程并发实现方法
2016/09/30 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
js Date概念详细介绍
2013/11/22 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python合并文本文件示例
2014/02/07 Python
Python Tkinter简单布局实例教程
2014/09/03 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
python生成九宫格图片
2018/11/19 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
tensorflow自定义激活函数实例
2020/02/04 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Python如何telnet到网络设备
2021/02/18 Python
德能勤绩廉个人总结
2015/02/14 职场文书
客户经理岗位职责大全
2015/04/09 职场文书