您的位置:首页 > 理论基础 > 数据结构算法

week03_python内置数据结构__封装、解构

2018-08-17 12:23 741 查看
封装和解构
将多个值使用逗号分隔,组合在一起;

本质上,返回一个元组,只是省掉了小括号;

python特有语法,被很多语言学习和借鉴;

t1 = (1, 2) #定义为元组

t2 = 1, 2  #将1和2封装成元组,只是省掉了小括号
举例:
a = 4
b = 5

tmp = a
a = b
b = tmp
等价于
a, b = b, a

上句中,等号右边使用了封装,而左边就使用了解构

a, b = b, a 并不是直接就赋值了,事实经过类似这样:
a = 4
b = 5
c = b, a # c = (5, 4)

a, b = c


解构:
把线性结构的元素解开,并顺序的赋给其它变量;

左边接纳的变量数要和右边解开的元素个数一致;

举例:
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}     #非线性结构也可以解构,字典是用key;
a, b = {10, 20, 30}    #ValueError: too many values to unpack (expected 2)
a, *b = {10, 20, 30}    # a = 10 、b = [20, 30]
[a, b] = (1, 2)

[a, b] = 10, 20

(a, b) = {30, 40}
Python3的解构:

使用 *变量名 接收,但不能单独使用

被 *变量名 收集后组成一个列表

*d = 1,2,3,4 #会报错,这种带*的不允许单独使用

lst = list(range(5))

header, *m, tail = lst
print("header is :", header)
print("m is :", m)
print("tail is :", tail)

>>>:
header is : 0
m is : [1, 2, 3]
tail is : 4


丢弃变量:
这是一个惯例,是一个不成文的约定,不是标准;

如果不关心一个变量,就可以定义为改变量的名字为_;

_是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用;

lst = [9, 8, 7, 20]
head,  *_, tail = lst

print(head)
print(tail)

>>>:
9
20

# _ 是合法的标识符,看到下划线就知道这个变量就是不想被使用;
print(_)
# [8, 7]


例:
key, _, val = "JAVA_HOME=/usr/bin".partition("=")
#
#"JAVA_HOME=/usr/bin".partition("=") 其结果是:('JAVA_HOME', '=', '/usr/bin')
print(key)
print(val)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  封装 解构