浅谈python3打包与拆包在函数的应用详解


Posted in Python onMay 02, 2020

1、序列(拆包)

*用作序列拆包:*可对字符串、列表、集合、元组、字典、数字元素等序列进行拆包

print(*(1,2,3,4,5,6))
#1 2 3 4 5 6
print(*[1,2,3,4,5,6])
#1 2 3 4 5 6

序列拆包赋值:

注意:*变量 不能在第一个位置,否则会报错

a, b, *c = 0, 1, 2, 3 #获取剩余部分
a, *b, c = 0, 1, 2, 3 #获取中间部分
a, b, *c = 0, 1    
a, *b, c = 0, 1

优先对位置变量赋值,再对拆包的赋值

#测试结果
print(a,b,c)
0 1 [2,3]
0 [1,2] 3
0 1 [] #优先满足普通变量a、b的赋值
0 [] 1 #优先满足普通变量a、c的赋值

了解了一些基础的 * 拆包后我们现在来聊聊函数中的打包和拆包:

2、函数定义的多种形参(打包)

函数定义时多种形参的位置顺序

函数形参顺序为:def 函数名(【位置参数】,【*元组参数】,【默认参数=默认值】,【**字典参数】):

注意:形参里面的 * 和 ** 的含义是打包

【位置参数】:最普通的形参,必须与实参一 一对齐
【 * 元组参数】:把字符串、列表、集合、元组、字典、数字元素等序列打包成元组作为形参
【**字典参数】:把多个实参打包成字典作为形参
【默认参数=默认值】:函数调用时没有传入时用默认值,传入时用传入值

def 函数名(a,*b,c=3,**d):
  print("a:",a) 
  print('b:',b) 
  print('c:',c)
  print('d:',d)
# *元组参数只接受单一的值,而**字典参数是进行接收键值对
函数名(1,2,3,4,5,6,7,name="小明",age=18,sex="男")

#输出结果:
a: 1
b: (2, 3, 4, 5, 6, 7)
c: 3
d: {'name': '小明', 'age': 18, 'sex': '男'}

3、函数调用时的实参(拆包)

def tk(c,d,e,f,g): #d,e,f,g分别接收 1 2 3 4
  print(c)
  print(d,e,f,g)
a=[1,2,3,4]
b={1,2,3,4}
tk(a,*b) # *b将集合拆解为数字元素序列 1 2 3 4

运行结果:
[1, 2, 3, 4]
1 2 3 4

补充:

使用命名参数可大大增强函数调用的灵活性(参数位置无需一 一对应,但参数名必须一 一对应)

浅谈python3打包与拆包在函数的应用详解

总结:默认参数与命名参数一样,前者是形参,后者是实参**

让我们结合实参和形参看一下在函数中打包与拆包

def tk(a,*b): #2、再将数字元素序列 1 2 3 4打包成元组(1,2,3,4)
  print(a)
  print(b)
a1=[1,2,3,4]
b1={1,2,3,4}
tk(a1,*b1)  #1、先将b1拆包成数字元素序列 1 2 3 4 再传递给元组形参*b

#输出结果:
[1, 2, 3, 4] #a1未打包
(1, 2, 3, 4) #b1为打包后的元组

总结:函数形参和函数实参的*含义不一样,前者是打包,后者是拆包

对单个值操作 对任意值操作
位置参数、默认参数、命名参数 *元组参数、 **字典参数

4、函数返回多值时的打包

接收函数返回值的两种情况:

def 函数():
	return 返回值1 返回值2 返回值3
#1、当用一个变量接受多个返回值时,会打包成一个元组传递给变量
a=函数()
print(a)

#2、用与之数目对应的变量接受多个返回值
b,c,d=函数()
print(b,c,d)

#输出结果
(返回值1,返回值2,返回值3) #打包成元组
返回值1 返回值2 返回值3

到此这篇关于浅谈python3打包与拆包在函数的应用详解的文章就介绍到这了,更多相关python3打包与拆包内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中操作列表之List.append()方法的使用
May 20 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python pass详细介绍及实例代码
Nov 24 Python
利用Python如何批量更新服务器文件
Jul 29 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
Python pandas如何向excel添加数据
May 22 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
构建高效的python requests长连接池详解
May 02 #Python
如何基于windows实现python定时爬虫
May 01 #Python
如何基于python实现不邻接植花
May 01 #Python
Python接口测试结果集实现封装比较
May 01 #Python
解决python虚拟环境切换无效的问题
Apr 30 #Python
python爬虫实现POST request payload形式的请求
Apr 30 #Python
Pycharm IDE的安装和使用教程详解
Apr 30 #Python
You might like
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
关于js与php互相传值的介绍
2013/06/25 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python队列原理及实现方法示例
2019/11/27 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python3.5的包存放的具体路径
2020/08/16 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
2019年.net常见面试问题
2012/02/12 面试题
十佳中学生事迹材料
2014/06/02 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2014年图书室工作总结
2014/12/09 职场文书
暑期工社会实践报告
2015/07/13 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书
无线电知识基础入门篇
2022/02/18 无线电
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫