为什么python打包的应用那么大_浅谈python3打包与拆包在函数的应用详解
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
补充:
使用命名参数可大大增强函数调用的灵活性(参数位置无需一 一对应,但参数名必须一 一对应)
总结:默认参数与命名参数一样,前者是形参,后者是实参**
让我们结合实参和形参看一下在函数中打包与拆包
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打包与拆包内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
时间: 2020-05-02
为什么python打包的应用那么大_浅谈python3打包与拆包在函数的应用详解相关推荐
- python中rstrip用法_浅谈Python3中strip()、lstrip()、rstrip()用法详解
简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个 ...
- python类构造方法缺省_浅谈python3 构造函数和析构函数
要点: 1.魔法方法,被__双下划线所包围 在适当的时候自动被调用 2.在创建一个对象的时候,一定会调用构造函数 3. del析构函数,在del a对象的时候,并一定会调用该析构函数 只有当该对象的引 ...
- python3打印如何换行_浅谈Python3中print函数的换行
Python3中print函数的换行 最近看了看Python的应用,从入门级的九九乘法表开始,结果发现Python3.x和Python2.x真的是有太大的不同之处,就比如这里的换行处理,怕忘记先记下来 ...
- python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
1.re.match()fvk免费资源网 re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.fvk免费资源网 包含的参数如下: ...
- python 读excel字符型 数值_浅谈python 读excel数值为浮点型的问题
浅谈python 读excel数值为浮点型的问题 如下所示: #读入no data = xlrd.open_workbook("no.xlsx") #打开excel table = ...
- python老是报参数未定义_浅谈Python程序的错误:变量未定义
Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...
- python数学库的使用方法_浅谈numpy库的常用基本操作方法
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...
- python的roc曲线与阈值_浅谈ROC曲线的最佳阈值如何选取
为了获取ROC曲线的最佳阈值,需要使用一个指标--约登指数,也称正确指数. 借助于matlab的roc函数可以得出计算. % 1-specificity = fpr % Sensitivity = t ...
- python理解浮点数运算的误差_浅谈浮点数运算的误差
测试程序 我们知道,浮点数运算存在舍入误差.在某些特殊的情况下,舍入误差还可以累计到非常大的地步.让我们来看一下测试程序吧: 1 usingSystem;2 3 static classDecimal ...
最新文章
- HTTP相关知识 - 1
- 踩坑记(1)——使用slf4j+logback记录日志
- vs窗体 oracle,VS2010连接oracle数据库的简单例子
- [css] 假如设计稿使用了非标准的字体,你该如何去实现它?
- Mr.J--Java接口实现
- php图片生成缩略图_php实现根据url自动生成缩略图的方法
- spring扩展点六:监听spring容器刷新事件
- 攻击局域网计算机,如何攻击局域网电脑
- c语言api接口文档模板,apiDoc生成接口文档,不费吹灰之力
- 交换机三种端口模式Access、Hybrid和Trunk
- kubernetes【工具】kind【1】入门实践
- Usage of API documented as @since 1.8+”报错的解决办法
- 如何安装KEIL并配置好51与STM32的环境
- 对抗苹果隐私新规?iOS应用1个月没更新 谷歌回应了
- 小米路由器的服务器无响应怎么回事,小米路由器常见问题与解决方法(高级功能)...
- JAVA学习笔记JEECG BOOT介绍
- 全面落地,2014大数据应用案例TOP100
- mysql 索引底层数据结构与算法
- 献给曾经爱过和正在爱的你
- 怎样对接同花顺股票程序化交易接口?
热门文章
- nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
- Scala集合List的常用方法:take/flatMap/filter/zip/union/intersect/diff及WordCount集合实现
- Linux netstat -tunlp查看端口占用情况
- springmvc @PathVariable注解进行传参操作
- AngularJS基于模块化的MVC实现
- mybatis修改mysql变量_Java通过MyBatis框架对MySQL数据进行增删查改的基本方法
- mysql查询锁表语句和kill对应的线程
- 【小米面试题】-给定一个具体时间,计算时针与分针之间的角度
- Java是类型安全的语言,而C++是非类型安全的?【解释】
- 解决:pycharm中动画函数animation.FuncAnimation不起作用