Python-封装、拆包、*与_符号

1、基本概念

1.1、封装

1.1.1、简介

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

1.1.2、示例

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

t2 = (1, 2)
print(type(t2))

1.2、拆包

1.2.1、简介

Python中等式右侧是一个容器类型,左侧是逗号分隔的多个标识符,将右侧容器中数据的一个个和左侧标识符一一对应。这种操作称为拆包unpacking。
从Python3开始,对解构做了很大的改进,现在用起来已经非常的方便快捷。

1.2.2、示例

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

2、封装和拆包使用案例

2.1、交换变量

# 交换数据
x = 4
y = 5
t = x
x = y
y = t

# 封装和拆包,交换
x = 10
y = 11
x, y = y, x

2.2、元组、列表拆包

# 左右个数相同
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}

3、拆包-符号:*与_

3.1、示例 - *号

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

# * 只支持前置和后置,不能多星号或单星号
a, *rest = [1, 2, 3, 4, 5]
print(a, rest) # 1 [2, 3, 4, 5]
*rest, b = [1, 2, 3, 4, 5]
print(rest, b) # [1, 2, 3, 4] 5
# *rest = [1, 2, 3, 4, 5] # 报错
# a, *r1, *r2, b = [1, 2, 3, 4, 5] # 报错

3.2、示例 - _号

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

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

4、其它结构

x = [range(5)]
y = [*range(5)]
z = list(range(5))
print(x, y, z)
# [range(0, 5)] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4]

5、练习题

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

nums = [1, (2, 3, 4), 5]
_,num,_=nums[1]
print(num)

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

li = list(range(10))
print(li)
print(li[1],li[3],li[-2])

 

posted @ 2023-06-27 10:44  小粉优化大师  阅读(78)  评论(0)    收藏  举报