【从Python基础到深度学习】12. 封包、解包

封包

  • 将多个值赋值给一个变量时,Python 会自动将这些值封装成元组,这个特性称之为封包
a = 1, 2, 3, 4
print(a)

解包

所有可迭代对象都支持解包

str list tuple dict set reversed range zip enumerate

  • 赋值过程中的解包
  • 赋值符号左边变量和右边可迭代对象的元素数量一样,则一一对应赋值
# 赋值符号左边变量和右边可迭代对象的元素数量一样,则一一对应赋值
a, b, c, d = (1, 2, 3, 4)
print(a, b, c, d) # 1 2 3 4
# 当左边和右边数量不一样时,会报错
a, b, c, d = (1, 2, 3, 4, 5)
print(a, b, c, d) # 报错
可以在其中一个变量前面加一个星号(*),代表这个变量可接收0个/1个/ 多个元素,并把它们组成列表来赋值,理解起来类似于不定长参数中的 *args。解包过程: 先把其他变量根据位置确定对应要赋值的元素,剩下的元素都归带星号(*)的变量,组成列表来赋值
a, b, *c, d = (1, 2, 3, 4, 5)
print(a, b, c, d) # 1 2 [3, 4] 5
a, b, *c, d, e = (1, 2, 3, 4)
print(a, b, c, d, e) # 1 2 [] 3 4

   不允许多个带星号(*)的变量,因为会有歧义

a, *b, *c, d = (1, 2, 3, 4, 5)
print(a, b, c, d)
这种解包的写法是错误的
*a = (1, 2, 3, 4, 5)

正确的写法应该是这样

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

 通常约定:当变量不需要使用时, 可以用下划线命名

*a, _, _ = (1, 2, 3, 4, 5)
print(a) # [1, 2, 3]
print(_)
在可迭代对象前面加一个星号( * ),在字典对象前面加双星( ** ), 这种解包方式主要运用在函数传参的过程中
a = (1, 2, 3, 4, 5)
print(*a) # 1 2 3 4 5
print(*(1, 2, 3, 4, 5)) # 同上

在可迭代对象前面加一个星号(*),使其以位置参数的形式传入函数

# 在可迭代对象前面加一个星号(*),使其以位置参数的形式传入函数
def func(a, b, c, d=None):print(a, b, c, d)
tup = (1, 2, 3, 4)
dic = {'name': "Tom", 'age': 18, 'height': 188}
func(*tup) # 等效于 func(1, 2, 3, 4)
func(*dic) # 等效于 func('name', 'age', 'height')
在字典对象前面加双星(**),使其以关键字参数的形式传入函数
def func(a, b, c, d=None):print(a, b, c, d)
dic = {'a': "Tom", 'b': 18, 'c': 188, 'd': True}
func(**dic) # 等效于 func(a="Tom", b=18, c=188, d=True)
def func(**d):print(d)
dic = {'a': "Tom", 'b': 18, 'c': 188, 'd': True}
func(**dic)
def  func(**d):print(**d)d = {'sep':'1', 'end':'2'}
func(**d)

 函数中解包与封包的使用

list = [1, 2, 3, 4 ]
def func(a, b, c, d):print(a, b, c, d)func(list)

 为什么报错?

list = [1, 2, 3, 4 ]
def func(a, b, c, d):print(a, b, c, d)func(*list)
def func(*a):print(*a)a = [1, 2, 3, 4]
func(*a)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB实战面试指南:常见问题一网打尽

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! MongoDB是一款流行的非关系型数据库,以其高效、可扩展的特性受到开发者的青睐。了解MongoDB的架构、存储引擎和数据结…

ETH共识升级之路

简介 根据我们之前的介绍,了解到ETH网络的共识方式,已经从 PoW 切换到了 PoS,今天我们就回顾下升级之路,以及升级带来的影响 最早的共识机制 PoW 以太坊创建之初采用了类似比特币的工作量证明机制,即矿工通过计算哈希函…

java房屋中介(java+SQL2000)-391-(源码+说明资料)

转载地址: http://www.3q2008.com/soft/search.asp?keyword391 任务及要求:  1.设计(研究)内容和要求(包括设计或研究内容、主要指标与技术参数,并根据课题性质对学生提出具体要求)  本系统…

知识图谱中的数据服务是什么?

随着信息时代的飞速发展,数据已经成为了各行各业的重要资源。知识图谱作为大数据时代的一种新型数据组织形式,能够将分散、无序的数据进行结构化处理,并建立起相互之间的关系,从而更好地满足人们对知识的需求。而在知识图谱中&…

CircuitBreaker熔断器

CircuitBreaker熔断器 1、Hystrix目前也进入维护模式 ​ Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下&…

C++演变历史

C 从 C 98 版本到今年确定的 C23,共经历了 6 个版本的迭代。上面这张图里,列出了每次版本更新变化的内容。顶部黑体字的大小说明了版本变化的大小,其中 C14 是字体最小,这个版本是 C11 的增量版本,之所以没有大的变动&…

Server-Sent Events (SSE) 实现从服务器到客户端的实时数据流

前期回顾 避免阻塞主线程 —— Web Worker 示例项目-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136721297?spm1001.2014.3001.5501 目录 CSDN 彩色之外 📝 前言 🛠️ 安装 ✂️ 运行服务器 ✂️ 运行index.html ♻️ 贡献…

身份证查询-身份认证-javascript实名认证接口-

翔云身份证实名认证接口将与网络平台携手共筑信息安全防线,守护每一笔交易的真实可信,助力您的企业在数字化浪潮中稳健前行! 以下是javascript语言调用翔云身份证实名认证API的代码: var form new FormData(); form.append("…

引领短剧风尚,打造全新观影体验——短剧APP开发之旅

随着移动互联网的迅猛发展,短视频和短剧成为了大众休闲娱乐的新宠。为了满足用户对于高质量、快节奏内容的需求,我们决定开发一款全新的短剧APP,为用户带来前所未有的观影体验。 这款短剧APP将集合丰富多样的短剧资源,涵盖各种题…

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?

目录 一、面试官心理分析 二、面试题剖析 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 一、面试官心理分析 其实这是问到缓存必问的,因为缓存雪崩和穿透,是缓存最大的两个问题,要么不出现,一旦出现就是致命性的问题&#x…

B/S基于云计算的云HIS智慧医院管理系统源码带电子病历编辑器

目录 一、系统概述 二、开发环境 三、系统功能 1、门诊部分 2、住院部分 3、电子病历 4、药物管理 5、统计报表 6、综合维护 7、运营运维 云HIS系统:病案首页 云his系统源码 SaaS应用 功能易扩 统一对外接口管理 现如今,大数据、云计算、移动…

c# 编辑、删除一条数据

1、编辑数据 [HttpPost] public MessageModel<string> Put([FromBody] Dtable request) { var data new MessageModel<string>(); request.UPDATETIME DateTime.Now; if (request.ID>0) { …

案例:MySQL 主从复制与读写分离

1.案例环境 一、准备五台主机 Master&#xff1a;操作系统CentOS 7.3x86_74、IP地址192.168.17.10。Slave1&#xff1a;操作系统CentOS 7.3x86_74、IP地址192.168.17.20。Slave2&#xff1a;操作系统CentOS 7.3x86_74、IP地址192.168.17.30。Amoeba&#xff1a;操作系统CentO…

HDOJ 2048

神、上帝以及老天爷 Problem Description HDU 2006’10 ACM contest的颁奖晚会隆重开始了&#xff01; 为了活跃气氛&#xff0c;组织者举行了一个别开生面、奖品丰厚的抽奖活动&#xff0c;这个活动的具体要求是这样的&#xff1a; 首先&#xff0c;所有参加晚会的人员都将一…

python | pop()和remove()方法

pop()与remove()方法都是删除列表中的元素&#xff0c;但删除的位置不同 ① pop()&#xff1a;删除列表中的最后一个元素 ② remove()&#xff1a;可以删除列表中的某一个值 如果某一个值有多个&#xff0c;则删除第一个&#xff08;即最左边出现的那一个&#xff09; li[…

【WPF】Canvas的Path画线 颜色值偏差和面积不准确

图像中左上角2个红色线段 颜色值有偏差&#xff0c;且线段高度不准确&#xff08;我设置的是Red,1&#xff09;。 解决方案&#xff1a; 1、PathGeometry PathFigure LineSegment 2、Stretch设置Fill <Path Stretch"Fill" Stroke"Red"…

Axure软件安装汉化教程

Axure软件安装汉化教程 一、准备教程 下载Axure的软件&#xff0c;并解压打开 二、安装过程 双击Axure软件的运行程序&#xff0c;修改安装程序的路径&#xff0c;默认下一步即可。 三、软件汉化 打开Axure的软件安装路径&#xff0c;将汉化包复制粘贴进入到Axure RP 9安装…

C语言从入门到实战————数组和指针的深入理解

前言 在C语言中&#xff0c;数组和指针有的密切得联系&#xff0c;因为数组名本身就相当于一个指针常量。指针是一个变量&#xff0c;专门用来存储另一个变量的内存地址&#xff0c;通过这个地址可以访问和操作该变量的值&#xff0c;同时也包括数组。数组是一组连续存储的同类…

什么是云?公共云,私有云,混合云分别是什么?云概念的提出 白话总结

一、什么是云 “云” 通常是指云计算环境&#xff0c;非本地化的计算环境。即我们没有环境或者机器&#xff0c;那么可以将我们的提供的服务部署到云计算环境&#xff0c;而这个环境是由其他运营商来提供和维护。 也可以理解为我们将我们的产品或者计算服务部署在远端网络。 …

【CKA模拟题】查询消耗CPU最多的Pod

题干 For this question, please set this context (In exam, diff cluster name) 对于此问题&#xff0c;请设置此上下文&#xff08;在考试中&#xff0c;diff 集群名称&#xff09; kubectl config use-context kubernetes-adminkubernetesFind the pod that consumes the …