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单例模式实例分析
Apr 08 Python
Python去除、替换字符串空格的处理方法
Apr 01 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
Python多线程原理与用法实例剖析
Jan 22 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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存储过程调用实例代码
2013/02/03 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
django-csrf使用和禁用方式
2020/03/13 Python
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
init进程的作用
2015/08/20 面试题
葬礼司仪主持词
2014/03/31 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
企业标语口号
2014/06/10 职场文书
公司年终奖分配方案
2014/06/16 职场文书
营销学习心得体会
2014/09/12 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
结婚堵门保证书
2015/05/08 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server