对于可迭代对象,如元组、列表、字符串、集合、字典这些可迭代对象都可以被拆包,拆包是指将一个结构中的数据拆分为多个单独变量中。拆包的方式大致有两种,一种是以变量的方式来接收,另一种是用‘*’号。下面先讲第一种方式。

以变量的方式接收一定要注意左右两边元素的个数和变量个数要统一,不然会报错。先以一个元组为例,如下一个元组:

a = ('computer',2,8000,(2018,10,16))

这个元组的意思是一个人买了两台电脑,一台8000人名币,于2018年10月16日购买。

如果我们仅以两个变量来接收的话,看看会怎样?

现在我们用四个变量来接受这个元组,将其数据拆成一个个单独的数据。

如果我们只想获取其价格和购买日期,前面两个元素我们可以用一个变量来接受,这个变量由通配符构成。

很明显,一个通配符构成的变量可以替代前面的两个变量,但其本身没有什么意义,故在交互模式下直接输入*_会报错。通配符构成的变量可以替代指定范围内的所有变量,这为取出指定元素带来了便利。

与其他可迭代对象不同的是,字典拆包出来的仅仅是key,如下所示:

第二种方式用*来拆包就比较粗暴了,如下所示:

可以发现,用*给字典拆包,拆出的元素还是key。

其实还有一种拆包,它是鉴于函数来实现的,这种函数也同样实现了装包这个功能。*args和 **kwargs这两个参数相信大家都不陌生,一个是用来接收多余的未命名参数,另一个是用来接收形参中命名参数。args它是一个元组,它把传入的数据放进了args元组中,而kwargs是一个字典,故装包的意义就是把未命名的参数和命名的参数放在元组或字典中。

python3拆包详解的更多相关文章

  1. Python3语法详解

    一.下载安装 1.1Python下载 Python官网:https://www.python.org/ 1.2Python安装 1.2.1 Linux 平台安装 以下为在Unix & Linu ...

  2. 用Python3发送邮件详解

    [整个邮件系统是怎样工作的] 邮件自互联网诞生之初就有了,它和web服务一样也是采用的c/s架构,比如我们常见的邮件客户端有outlook.foxmail这些邮件客户端软件. 当我们要发邮件时客户端就 ...

  3. Python3字符串 详解

    Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可. Python 访问字符串中的值 P ...

  4. python3 常用模块详解

    这里是python3的一些常用模块的用法详解,大家可以在这里找到它们. Python3 循环语句 python中模块sys与os的一些常用方法 Python3字符串 详解 Python3之时间模块详述 ...

  5. 详解:Python2中的urllib、urllib2与Python3中的urllib以及第三方模块requests

    在python2中,urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能.两个最显著的不同如下: 1.urllib2可以接受一个Request类的实例来设置URL请求的hea ...

  6. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  7. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  8. (转)详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数

    原文:https://www.jb51.net/article/138363.htm hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(object,n ...

  9. 全网最全的Windows下Python2 / Python3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)

    不多说,直接上干货! 建议,你用Anaconda2或Anaconda3. 见 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库( ...

随机推荐

  1. 吴裕雄--天生自然C++语言学习笔记:C++ 判断

    判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). 下面是大多数编程语言中典型的判断结构的一般形式: 判断语句 if 语句 一 ...

  2. Vim中的基本操作

    Vim中的基本操作 vim介绍.实验知识点.Vim中的六种基本模式 2.1 vim 6种模式介绍 从vi衍生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执 ...

  3. JS图片多个上传,并压缩为Base64

    首先是JS 批量上传 HTML <div id="Pic_pass"> <p style="font-size: 20px;font-weight: b ...

  4. zabbix_agent_win

    http://mayulin.blog.51cto.com/1628315/514447/ http://www.cnblogs.com/likehua/p/3968689.html 先下载win客户 ...

  5. idea导入新项目后右键main方法没有Run xxx.main()

    刚安装的idea2019.1,基本上没有什么配置.导入从github clone下来的工程.鼠标右键main方法时没有发现 run 选项,如下图所示: 这里是配置有问题造成的,对比下正常的工程,可以发 ...

  6. [题解] Luogu P5641 【CSGRound2】开拓者的卓识

    这个柿子挺别致的......还有信仰膜数998244353 直接讲正解吧...... 首先发现这个柿子从上往下算好像不怎么行,我们从下往上看,(下面令\(Ans_r = sum_{k,1,r}\)). ...

  7. faster rcnn报错:TypeError: slice indices must be integers or None or have an __index__ method

    https://blog.csdn.net/qq_27637315/article/details/78849756 https://blog.csdn.net/qq_21089969/article ...

  8. 流程控制语句反汇编(1)(Debug版)

    // 流程控制语句反汇编 //Author:乾卦 Date:2014-5-8 #include<stdio.h> int main() { ,b=; if(a>b) { a=b; } ...

  9. MYSQL连接不上100061错误

    有界面的情况下启动MYSQL 无界面 https://blog.csdn.net/qq_22233621/article/details/72673176 参考

  10. maven项目集成Quartz定时任务框架,实现批处理功能

    一.Quartz简介 主要做定时任务,即:在指定时间点或时间段,执行某项任务,可设置执行次数.时间间隔等. 二.Springcloud简介 对比传统的.庞大的.复杂的.以ssm或ssh为框架的web项 ...