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

2021/01/23 09:25
阅读数 75

封装和解构

    将多个值使用逗号分隔,组合在一起;

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

    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)


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部