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日期操作学习笔记
Oct 07 Python
打印出python 当前全局变量和入口参数的所有属性
Jul 01 Python
python在命令行下使用google翻译(带语音)
Jan 16 Python
python中for语句简单遍历数据的方法
May 07 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Python 内置函数complex详解
Oct 23 Python
win与linux系统中python requests 安装
Dec 04 Python
Django使用redis缓存服务器的实现代码示例
Apr 28 Python
python实现对图片进行旋转,放缩,裁剪的功能
Aug 07 Python
Python字符串处理的8招秘籍(小结)
Aug 13 Python
500行python代码实现飞机大战
Apr 24 Python
教你怎么用Python监控愉客行车程
Apr 29 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
RequireJs的使用详解
2017/02/19 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
Python爬取读者并制作成PDF
2015/03/10 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python中正则表达式的使用方法
2018/02/25 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
python进行文件对比的方法
2018/12/24 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python如何输出反斜杠
2020/06/18 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
高中体育教学反思
2014/01/29 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
化工专业自荐书
2014/06/16 职场文书
力学专业求职信
2014/07/23 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
网络销售员岗位职责
2015/04/11 职场文书
老乡聚会通知
2015/04/23 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python