python的封包与解包

1. python 封包

将多个值赋值给一个变量时,python会自动将这些值封装成元组,这个特性称之为封包

a = 1, 2, 3

print(a, type(a)) # (1, 2, 3)

当函数返回多个数值时,也会进行封包

def test():

return 1, 2, 3

a = test()

print(a, type(a)) # (1, 2, 3)

实践中,很少主动使用封包操作

2. python解包

python解包是使用频率非常高的技术,下面列列举几种使用python解包的场景

2.1 接收函数返回值

def test():

return 1, 2, 3

a, b, c = test()

print(a, b, c) # 1 2 3

函数的返回值是一个元组,左侧是三个变量,这样就会发生解包,a, b, c依次等于元组里的元素,函数的返回值有3个,被封包成了元组, 赋值语句的左侧不一定非得是3个变量

def test():

return 1, 2, 3

a, *b = test()

print(a, b) # 1 [2, 3]

变量a赋值为1, 变量b前面有一个星号,剩余的2, 3 将被解包为列表

2.2 遍历字典

my_dic = {

'一': 1,

'二': 2,

'三': 3

}

for item in my_dic.items():

print(item)

# 解包

for key, value in my_dic.items():

print(key, value)

2.3 传递参数

def func(*args):

print(sum(args))

a = (2, 4, 6)

func(*a) # 将元组解包成可变参数

def func_2(**kwargs):

for key, value in kwargs.items():

print(key, value)

b = {'一': 1, '二': 2}

func_2(**b) # 将字典解包成关键字参数

使用解包技术,可以将元组解包成可变参数,将字典解包成关键字参数,这种技术在实践中大量应用,比如使用python操作redis时,如果你想一次性向集合中添加多个值,就必须使用解包结束传入参数

import redis

from conf.redis_conf import RedisConfig, QueueConfig

r = redis.Redis(host=RedisConfig.host, port=RedisConfig.port,

password=RedisConfig.password, db=RedisConfig.db)

tup = ('apple', '谷歌', '阿里', '腾讯')

r.sadd('my_set', *tup)

sadd的方法定义如下

def sadd(self, name, *values):

"Add ``value(s)`` to set ``name``"

return self.execute_command('SADD', name, *values)

如果不使用解包技术,就只能在调用sadd方法时手动逐个写入参数,耗时又费力

2.4 合并两个字典

巧妙的利用解包技术,可以简单方便的将两个字典合并到一个新字典中

dic_1 = {'一': 1}

dic_2 = {'二': 2}

dic_3 = {**dic_1, **dic_2}

print(dic_3) # {'一': 1, '二': 2}

python元祖封包_python的封包与解包相关推荐

  1. python元祖用法_Python序列(列表list和元组tuple)用法完全攻略

    所谓序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员. Python 的常见序列类型包括字符串.列表和元组.前一章介绍过的字符串,其实就是一种常 ...

  2. python元祖格式_python中元祖

    1.认识元祖 1.什么是元祖 使用()将多个元素括起来,多个之间用逗号隔开. a. 容器,可以同时存储多个数据,不可变的,有序 不可变 --->不能增删改 有序 --->可以通过下标获取元 ...

  3. python元祖用法_Python中元祖的用法

    元祖tuple(,) 元祖就是不可变的列表,元祖用()表示,元素与元素之间用逗号隔开,数据类型没有限制.tu = ('科比','詹姆斯','乔丹') tu = tuple('123') 小括号中有一个 ...

  4. python元祖修改_Python列表的增删改查和元祖

    一.定义列表 1.names = ['mike','mark','candice','laular'] #定义列表 2.num_list = list(range(1,10)) #range生成1-1 ...

  5. python元祖切片_Python

    Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: 实例(P ...

  6. python元祖迭代_python *式语法在迭代一个元组序列时的逻辑?

    九州编程 我猜想你的困惑可能是为什么:bar hello结果没有出现?因为你的records第二项写错了: ('batr', 'hello') 应该是 ('bar', 'hello'),In [1]: ...

  7. python元祖封包_Python基础——解包与封包

    1.python封包 将多个值赋值给一个变量时,Python会自动将这些值封装成元组,这个特性称之为封包 a = 1,2,3 print(a,type(a)) 返回 (1, 2, 3) 当函数返回多个 ...

  8. python的元祖类型_python元组类型

    元组类型简介 使用括号包围的数据结构是元组(tuple).例如: >>> (1,2,3) (1, 2, 3) >>> T = (1,2,3,) >>&g ...

  9. python元祖组成字典_Python之旅第四天(列表、元祖、字典和习题)

    第四天,感觉时间还是过得很快,今天内容确实有点多,关于list的方法实在是太多了,元组tuple感觉有点鸡肋,可能得到后面才知道他的作用吧,然后是字典,看了很多关于字典的介绍,但是这货到底是干啥用的一 ...

  10. python元祖_python元祖基本操作

    #-*- coding:utf-8 -*- # 创建空元组 # temp1 = (); # 如果元祖中只包含一个值,需用逗号隔开消除歧义 # temp1=(1,) # 元祖的基本操作 # 访问元祖,可 ...

最新文章

  1. cmake编译安装完成后 执行cmake --version报错 bash: /usr/bin/cmake: 没有那个文件或目录
  2. 盖茨、奥巴马、马斯克账号被黑,推特遭大规模黑客攻击
  3. c dup 函数
  4. 如何让网站被百度谷歌快速收录
  5. Club Web Site-Customized web controls
  6. java8 list切片_Java8新特性_创建 Stream、流筛选与切片
  7. 入门程序之入门代码编写
  8. CRM----管理软件分析( ERP/CRM/OA)
  9. CDA数据分析师 - 备考指南
  10. 三菱PLC项目案例学习之PLC控制伺服或步进电机带动丝运行案例
  11. 【供应链案例】解密可口可乐供应链管理策略,揭头部饮料企业成功之道
  12. vs2015编译vtk
  13. mysql拼接两列数据_Mysql合并两列数据
  14. 笔记本计算机运行程序,这几招让你的笔记本电脑运行速度变快 必学技巧
  15. 优动漫PAINT安装教程
  16. 计算机函数sumif实例,Excel2019中SUMIF函数的语法及使用方法与实例
  17. linux lpte_PC并行口LPT的IO操作(基于WinIo)
  18. 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动
  19. CPU的主频/核心数
  20. java基础知识粗略整理

热门文章

  1. 社交网络时代下的网络营销
  2. 免费下载的音乐的6个网站,非常实用!
  3. 5.1.3 NoSQL数据库-Redis(键值key-value)-五大数据类型
  4. 往事如烟 - 老钟15
  5. Python学习记录(小甲鱼C的课程)
  6. 设计模式之里氏宗青出于蓝而胜于蓝
  7. QTableWidget背景色交替
  8. 共享网络打印机无法连接计算机,电脑中出现共享打印机连接错误问题的解决方法...
  9. Deepin下安装日文输入法
  10. 360Lib整体介绍