python中封装与解构

简介: python中封装与解构

基本概念

t1 = 1, 2
print(type(t1)) # 什么类型
t2 = (1, 2)

print(type(t2))

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

x, y = (1, 2)
print(x) # 1

print(y) # 2

Python中等式右侧是一个容器类型,左侧是逗号分隔的多个标识符,将右侧容器中数据的一个个和左侧标识符一一对应。这种操作称为解构unpacking。

从Python3开始,对解构做了很大的改进,现在用起来已经非常的方便快捷。

封装和解构是非常方便的提取数据的方法,在Python、JavaScript等语言中应用极广。

# 交换数据
x = 4 y = 5 t = x x = y y = t
# 封装和解构,交换
x = 10
y = 11
x, y = y, x

1.简单解构

# 左右个数相同
a,b = 1,2 a,b = (1,2) a,b = [1,2] a,b = [10,20] a,b = {10,20} # 非线性结构
a,b = {'a':10,'b':20} # 非线性结构也可以解构
[a,b] = (1,2) [a,b] = 10,20

(a,b) = {30,40}

那么,左右个数不一致可以吗?

a, b = (10, 20, 30)

2.剩余变量解构

在Python3.0中增加了剩余变量解构(rest)。

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

print(type(rest), rest) # <class 'list'> [2, 3, 4]

标识符rest将尽可能收集剩余的数据组成一个列表。

a, *rest = [1, 2, 3, 4, 5]
print(a, rest) *rest, b = [1, 2, 3, 4, 5]
print(rest, b) *rest = [1, 2, 3, 4, 5]
print(rest) # 内容是什么?

a, *r1, *r2, b = [1, 2, 3, 4, 5] # ?
# python学习交流群:711312441
a, *_, b = [1, 2, 3, 4, 5]
print(_) # 在IPython中实验,_是最后一个输出值,这里将把它覆盖
_, *b, _ = [1, 2, 3]
print(_) # 第一个_是什么
print(b) # 是什么

print(_) # 第二个_是什么

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

有人把它称作 丢弃(Throwaway)变量。

3.其它结构

x = [range(5)]
y = [*range(5)]
z = list(range(5))
print(x, y, z)

练习

1.从nums = [1, (2, 3, 4), 5]中,提取其中4出来

if __name__ == '__main__':
    _,[*_,a],_= [1, (2, 3, 4), 5]

    print(a)

2.从list(range(10))中,提取第二个、第四个、倒数第二个元素

if __name__ == '__main__':
    _,a,_,b,*_,c,_=range(10)
    print(a,b,c)
相关文章
|
4月前
|
Python
python封装执行cmd命令的方法
python封装执行cmd命令的方法
74 0
|
4月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
136 0
|
4月前
|
Python
请简述Python中的继承、封装和多态的概念。
【2月更文挑战第24天】【2月更文挑战第82篇】请简述Python中的继承、封装和多态的概念。
35 1
|
10月前
|
Python
一文学会Python面向对象中封装、继承、多态使用
一文学会Python面向对象中封装、继承、多态使用
97 0
|
4月前
|
Python
Python 面向对象编程:什么是面向对象编程(OOP)?解释封装、继承和多态的概念。
Python 面向对象编程:什么是面向对象编程(OOP)?解释封装、继承和多态的概念。
76 0
|
19天前
|
数据安全/隐私保护 开发者 Python
在 Python 中定义封装?
【8月更文挑战第29天】
21 8
|
1月前
|
Docker Python 容器
[docker]封装python的docker镜像
[docker]封装python的docker镜像
|
3月前
|
Python
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
|
3月前
|
SQL 关系型数据库 数据库
python使用DBUtil连接池封装psycopg2/hologres
这段代码是一个Python类`PsycopgConn`,用于管理PostgreSQL数据库连接池。类使用了`dbutils.pooled_db.PooledDB`来创建连接池,支持多线程,并提供了获取连接、关闭连接池、执行查询(`SelectSql`)、插入(`InsertSql`)和更新(`UpdateSql`)SQL的方法。类实现单例模式以确保只有一个实例存在。连接配置包括主机、端口等
|
2月前
|
数据挖掘 Python
封装和解构是 Python 中常用的技术
封装和解构是 Python 中常用的技术