首页 > 编程语言 > 详细

Python的封装和解构

时间:2020-09-15 17:18:34      阅读:66      评论:0      收藏:0      [点我收藏+]

封装

使用逗号将多个值组合在一起,返回一个元组,省略了小括号

In [72]: tp1=(1,2)

In [73]: type(tp1)
Out[73]: tuple

In [74]: tp2=1,2

In [75]: type(tp2)
Out[75]: tuple

In [76]: tp2=ab,2,c

In [77]: tp2
Out[77]: (ab, 2, c)
In [78]: tp2=[1,2],ab,2,c

In [79]: tp2
Out[79]: ([1, 2], ab, 2, c)

解构

将线性结构解开,顺序赋值给其他变量(左边接受赋值的变量数要和右边数据结构解开的元素数一致)

In [80]: str1=abc,bcd

In [81]: sub1,sub2=str1

In [82]: sub1
Out[82]: abc

In [83]: sub2
Out[83]: bcd

解构

In [91]: a,b={1,2}

In [92]: a
Out[92]: 1

In [93]: b
Out[93]: 2

In [94]: a,b={a:10,b:30}

In [95]: a
Out[95]: b

In [96]: b
Out[96]: a

In [98]: a,b={1,2,3}
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-98-14e2385ba548> in <module>
----> 1 a,b={1,2,3}

ValueError: too many values to unpack (expected 2)

In [106]: [a,b]=(1,2)

In [107]: a
Out[107]: 1

In [108]: b
Out[108]: 2

In [109]: [a,b]=10,20

In [110]: a
Out[110]: 10

In [111]: b
Out[111]: 20

In [112]: (a,b)={a:10,b:30}

In [113]: a
Out[113]: b

In [114]: b
Out[114]: a

结构的本质

下面的例子:(a,b)接受右边的值后组成的一个元组,但是没有变量被赋值(a,b)这个元组,ipython使用 _ 来接受被遗弃的变量

In [121]: (a,b)=2,3

In [122]: a,b
Out[122]: (2, 3)

In [123]: _
Out[123]: (2, 3)

组合使用封装和解构(bubble)

In [84]: a = 1

In [85]: b = 2

In [86]: tmp =a

In [87]: a = b

In [88]: b = tmp

In [89]: a
Out[89]: 2

In [90]: b
Out[90]: 1

与下面的表达式等价:

a, b = b, a

上面的语句中,等号左边使用了结构,右边使用封装

Python3中的解构

使用*VARIABLE 接收,*VARIABLE接收后组成一个列表

 

In [1]: lst= list(range(10))

In [2]: a,*mid,b = lst

In [3]: a
Out[3]: 0

In [4]: b
Out[4]: 9

 

In [8]: *head, tail=lst

In [9]: head
Out[9]: [0, 1, 2, 3, 4, 5, 6, 7, 8]

In [10]: head, *tail=lst

In [11]: tail
Out[11]: [1, 2, 3, 4, 5, 6, 7, 8, 9]

不能给多个表达式

In [15]: a,*var1,b,*var2,tail=lst
  File "<ipython-input-15-7b7f4a61b498>", line 4
SyntaxError: two starred expressions in assignment

 

切片练习

从lst=[1,(3,4,5),10]中提取出5

In [22]: _,[*_,tail],_=lst

In [23]: tail
Out[23]: 5

 

Python的封装和解构

原文:https://www.cnblogs.com/zh-dream/p/13441589.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!