浅谈python3打包与拆包在函数的应用详解
作者:Der凯 发布时间:2022-03-05 00:33:15
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
来源:https://blog.csdn.net/m0_46141590/article/details/105838491


猜你喜欢
- 一个什么都不懂的家伙非跟我要个sql查询器 随便写了一个,当然为了数据安全,要过滤掉一个sql关键词和系统中的一些表了 哦,对了,里面的一些
- 慢查询日志概念MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过lon
- 1. 前言但是对于很多人来说,首先编写一款 App 需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显得有一定难度的本篇文章
- MQTT是一种轻量级的消息传输协议,它广泛用于物联网设备之间的通信,例如传感器,智能家居等等。MQTT在Web应用程序中的一个常见用例是,用
- SUBSTRING 返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft&am
- 字体的处理在网页设计中无论怎么强调也不为过,毕竟网页使用来传递信息的,而最经典最直接的信息传递方式就是文字,所以,了解一点字体的基本知识对于
- Windows下MySQL的安装和删除,供大家参考,具体内容如下安装Mysql1 下载mysql下载地址1;下载地址22 安装教程2.1配置
- 1.背景 sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试。sysbench 支持的测试
- 1、基本语法SELECT查询列表FROM表名WHERE筛选表达式;2、按条件表达式筛选条件运算符:>,<,=,!=,<&g
- mysql 安装了最新版本8.0.11后创建用户并授权后,授权的用户连接数据库提示The server requested authenti
- 大家可以先参考python切片复制列表的知识点详解这篇内容,对知识点用法有个了解切片,即处理一个完整列表中部分数据。语法 变量[起始索引:终
- 什么是Canvas<canvas> 是一个新的 HTML 元素,这个元素在 HTML5&
- 当需要制作转动鼠标滚轮放大页面字体这样的交互效果时,会用到 Mousewheel 事件。其实在大多数浏览器(IE6, IE7, IE8, O
- PayPal支付功能其实一直在更新文档和接口,这里说的是一个简单的支付功能大概流程如下1,在网站的结账页面,设置一个提交到PayPal网站的
- 情景描述在项目开发过程中,不同项目阶段可能会有不同的分支,当创建好一个分支后,就需要将代码切换到这个分支上进行代码同步,例如将当前 orig
- 本文实例讲述了Python文件及目录操作的方法。分享给大家供大家参考。具体分析如下:在python中对文件及目录的操作一般涉及多os模块,o
- 前言本文将讲述怎么通过 MySql 的日志 binlog 文件进行数据恢复。通过已备份数据 加上 binlog 文件恢复上次备份到删除之间的
- 自动更新统计信息的基本算法是: · 如果表格是在 tempdb 数据库表的基数是小于 6,自动更新到表的每个六个修改。 · 如果表的基数是大
- 本文实例讲述了python处理二进制数据的方法。分享给大家供大家参考。具体如下:#!/usr/env/env python #-*- cod
- 以下是涉及到插入表格的查询的5种改进方法:1)使用LOAD DATA INFILE从文本下载数据这将比使用插入语句快20倍。2)使用带有多个