python基础 ---封装与解构

封装:当等号的右边出现以逗号分隔的多个值时,会自动封装到元组当中,这个过程就叫封装(packing)
解构:等式左侧为多个以逗号分隔的标识符与等号右侧的容器中的数据一一对应时,这个操作就叫解构(unpacking)

>>> t=1,2  #自动完成封装
>>> print(type(t))
<class 'tuple'>
>>> x,y = (1,2)  #x,y自动完成赋值,这个过程是先解构,然后一一赋值
>>> print(x)
>>> print(y)

封装和解构是非常方便的提取数据的方式,PythonJavaScript中应用很广泛
常规变量交换 vs 封装与解构

#变量交换
x = 10
y = 11
t = x
x = y
y = t

#封装与解构
x = 10
y = 11
x,y = y,x
简单解构

解构时,左右两侧的标识符与值的数量必须一致

a,b = (1,2)
a,b = 1,2
a,b = [1,2]
a,b = {1,2} #对于非线性结构也可以解构
a,b = {'x':10,'y':11}  #赋值给a,b的是字典中的key,而不是键值对
(a,b) = 1,2
[a,b] = (1,2)
{a,b} = {10,20}  ##这个会报错,因为a,b是在集合中的,元素不能进行赋值
a,b = (10,20,30)   #报ValueError
剩余变量解构

剩余变量解构使用"*标识符"来表示,这样在解构的同时此标识符能够尽可能多地收集等号右侧的值

>>> a,*b,c = [1,2,3,4,5,6] #标识符b会尽可能收集最多的值,除了a,c各占一个之外,其余的都给了b
>>> print(a,b,c)
1 [2, 3, 4, 5] 6 
>>> print(type(b))
<class 'list'>

单独使用剩余变量则不行:

>>> *a = [1,2,3,4]
SyntaxError: starred assignment target must be in a list or tuple

相同变量会被最后一个值覆盖

>>> a,b,a = [1,2,3]
>>> print(a)
3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值