首页 > 编程语言 >Python数据的封装与解构

Python数据的封装与解构

时间:2022-11-21 10:15:00浏览次数:37  
标签:10 封装 Python 解构 20 Out

Python等式右侧出现逗号分隔的多值的时候,就会将这几个值封装到元组中。这种操作称为封装packing。

封装

t1=1,2
type(t1)
Out[3]: tuple
t1
Out[4]: (1, 2)

封装和解构基本概念Python等式右侧出现逗号分隔的多值的时候,就会将这几个值封装到元组中。这种操作称为封装packing。Python中等式右侧是一个容器类型,左侧是逗号分隔的多个标识符,将右侧容器中数据的一个个和左侧标识符一一对应。这种操作称为解构unpacking

解构

t1=1,2
x,y=t1
x
Out[9]: 1
y
Out[10]: 2

封装和解构,交换

x = 10
y = 11
x,y = y,x

简单解构

a,b = (1,2)
a
Out[13]: 1
b
Out[14]: 2
    
a,b = [1,2]
a
Out[16]: 1
b
Out[17]: 2

a,b = [10,20]
a
Out[19]: 10
b
Out[20]: 20
    
a,b = {10,20} # 非线性结构
a
Out[22]: 20
b
Out[23]: 10
    
a,b = {'a':10,'b':20} # 非线性结构也可以解构
a
Out[25]: 'a'
b
Out[26]: 'b'

剩余变量解构

a, *rest, b = [1, 2, 3, 4, 5]
print(a, b)
1 5
print(type(rest), rest)
<class 'list'> [2, 3, 4]

剩余变量是不允许单独使用的

*rest = [1, 2, 3, 4, 5]

Traceback (most recent call last):
  File "C:\Python\Python368\lib\site-packages\IPython\core\interactiveshell.py", line 3233, in run_ast_nodes
    async_wrapper_code = compiler(mod, cell_name, 'exec')
  File "C:\Python\Python368\lib\codeop.py", line 133, in __call__
    codeob = compile(source, filename, symbol, self.flags, 1)
  File "<ipython-input-31-c3e7fa75df11>", line 4
SyntaxError: starred assignment target must be in a list or tuple

也不可以多用

a, *r1, *r2, b = [1, 2, 3, 4, 5]

Traceback (most recent call last):
  File "C:\Python\Python368\lib\site-packages\IPython\core\interactiveshell.py", line 3233, in run_ast_nodes
    async_wrapper_code = compiler(mod, cell_name, 'exec')
  File "C:\Python\Python368\lib\codeop.py", line 133, in __call__
    codeob = compile(source, filename, symbol, self.flags, 1)
  File "<ipython-input-33-ebb94b30b18a>", line 4
SyntaxError: two starred expressions in assignment

_是合法的标识符,这里它没有什么可读性,它在这里的作用就是表示不关心这个变量的值,我不想要。有人把它称作丢弃变量

_, *b, _ = [1, 2, 3]
print(_)
3
print(b)
[2]
print(_)
3

标签:10,封装,Python,解构,20,Out
From: https://www.cnblogs.com/hexug/p/16910450.html

相关文章

  • python时间模块
    datetime模块时间高级类datetime.date:表示日期的类datetime.datetime:表示日期时间的类datetime.time:表示时间的类datetime.timedelta:表示时间间隔,即两个时间......
  • python部分内建函数
    标识id​ 返回对象的唯一标识,CPython返回内存地址哈希hash()​ 返回一个对象的哈希值类型type()​ 返回对象的类型类型转换​ float()--》浮点数​ int()-......
  • Python当中的pip常用的一些命令
    安装如果是需要自己另外安装pip包的,在已经配置好Python的环境当中运行下面这个命令行py-mensurepip--upgrade升级要是你觉得自己的pip版本有点低,想要升级一下的话......
  • python 图片点击左键标注序号
    importcv2#引用opencvimportnumpyasnp#图片路径img=cv2.imread('Images\CAD2.png')a=[]b=[]counts=0#生成序号方法deffun():globalcounts#添加......
  • python except 自动无交互登录
    python+expect实现脚本自动登录远程服务器起因最近在折腾Ubuntu系统,有时候需要连接远程服务器,使用ssh命令连接较为复杂,需要记住每台机器的ip和密码,当然Ubuntu(lin......
  • 6000字带你初识Python面向对象
    ​......
  • 基于python中的静态方法,类方法以及类变量的用法
    基于python中的静态方法,类方法以及类变量的用法最近在做scada系统的自动化部署,采用python语言,在开发过程中用到了,静态方法,类方法,以及类变量,下面就这个特殊的用法做个......
  • python-opencv抓取RTMP
    opencv安装sudoapt-getinstallpython3-opencv源码安装https://blog.csdn.net/u011922698/article/details/123268143pip3installopencv-python#安装opencvpip3......
  • el-table封装
    el-table封装要封装组件,首先要先简单了解slot插槽,插槽分为具名插槽和匿名插槽匿名插槽又称默认插槽,当slot没有指定name属性的时候就是一个匿名插槽,一个组件内只能有一个......
  • Python学习笔记:timedelta类相关函数
    一、介绍timedelta类表示时间差,可以直接实例化,也可以由两个datetime类型的数据作差得到。缘起于求两个时间差,并需要转换为特定的单位(天、小时、分钟等),遂产生此需求。......