封装和解构
封装:
将多个值使用逗号分割,组合在一起
本质上,返回一个元祖,只是省掉了小括号
Python特有语法,被很多语言学习和借鉴:
t1 = (1,2) #定义为元组
t2 = 1,2 #将1和2封装成元组
type(t1)
tuple
type(t2)
tuple
举例:
a = 4
b = 5
temp = a
a = b
b = temp
等价于
a,b=b,a
- 上句中,等号右边使用了封装,而左边就使用了解构
解构:
把线性结构的元素解开,并顺序的赋给其他变量
左边接纳的变量数要和左边解开的元素个数一致
举例:
lst = [3,5]
first,second = lst
print(first,second)
a,b=(1,2)
a,b=[1,2]
a,b=[10,20]
a,b={10,20}
a,b={'a':10,'b':20} #非线性结构也可以解构
a,b={10,20,30} #错误
a,*b={10,20,30}
[a,b]=(1,2)
[a,b]=10,20
(a,b)={30,40} ##a=40,b=30 集合它是一个非线性结构所以无序
Python3的解构
使用* 变量名 接收,但不能单独使用
被* 变量名收集后组成一个列表
举例:
lst = list(range(1,101,2))
head,*mid,tail = lst
*lst2 = lst #!!不能单独使用
*body,tail=lst
head,*tail=lst
head,*m1,*m2,tail=lst #!!!不可以出现两个*
head,*mid,tail="abcdefghijklmn"
type(mid)
丢弃变量:
这是一个惯例,是一个不成文的约定,不是标准
如果不关心一个变量,就可以定义改变量的名字为_
_是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用
举例:
lst = [9,8,7,20]
first,*second = lst
head,*_,tail = lst
print(head)
print(tail)
#_是合法的标识符,看到下划线就知道这个变量就是不想被使用
print(_)
_,*_,tail = lst
print(_) [8,7]
print(tail) [20]
print(_) [8,7]