python中封装与解构
2023-06-13 09:16:41 时间
基本概念
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)
相关文章
- 【Python】 面向对象编程(OOP)之封装的艺术
- python中sqrt函数用法_Python : sqrt() 函数
- python中bool函数_bool()函数以及Python中的示例
- 【说站】python requests发送不同类型的数据
- Python 内置函数之——zip()
- python中的imread函数_python open函数参数
- 用python编写猴子吃桃问题_上午给猴子四只香蕉
- Python win32api_python api文档
- Python编程经典案例【考题】自由落体运动球的运动轨迹
- python type error是什么意思_Python 报错 TypeError:’DoesNotExist’对象不可调用
- 上手python之运算符和字符串格式化
- 5 行 Python 代码爬取 3000+ 上市公司的信息
- 软件测试|selenium+python基础方法封装(二)
- python – 异常捕获
- python-Python与MySQL数据库-使用Python执行MySQL查询
- Python删除同一个文件夹下的重复文件代码详解编程语言
- Python鸢尾花分类实现详解编程语言
- 使用Python执行Linux命令的方法(python调用linux命令)
- 使用Python操作MySQL数据库快速上手(python访问mysql数据库)
- Linux查看Python版本的有效方法(linux查看python版本)
- 从Python连接Oracle数据库介绍(python连接oracle)
- 使用Python连接SQL Server数据库(python连接sqlserver数据库)
- NSA 的 Python 手册
- RedisPy: A HighPerformance Python Client for Redis Database(redis-py)
- 跟老齐学Python之编写类之二方法