python的封装与解构
Posted rivendare
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的封装与解构相关的知识,希望对你有一定的参考价值。
封装
- 将多个值使用逗号分割,组合在一起
- 本质上,返回一个元祖,只是省掉了小括号
- python特有语法,被很多语言学习和借鉴
t1 = (1,2) #定义为元祖 t2 = 1,2 #将1和2封装成元祖 print(type(t1)) print(type(t2))
返回类型都为元组:
<class ‘tuple‘> <class ‘tuple‘>
使用方法:
a = 4 b = 5 temp = a a = b b = temp
# 等价于
a,b = b,a #等号右边使用了封装,左边使用了结构
使用示例,冒泡算法:
# 冒泡算法 list = [1,4,5,2,7,9,8,3,6] for i in range(len(list)): flag = False for j in range(len(list)-1-i): if list[j] > list[j+1]: list[j],list[j+1] = list[j+1],list[j] flag = True if not flag: break print(list)
解构
- 把线性结构的元素解开,并顺序的赋给其他变量
- 左边接纳的变量数要和右边解开的元素个数一致
示例:
list = [1,2] a,b = list print(a,b)
输出结果为:
1 2
结构方法示例:
a,b = 1,2 | 1 2 a,b = (1,2) | 输 1 2 a,b = [1,2] | 1 2 a,b = [10,20] | 出 10 20 a,b = {10,20} | 10 20 a,b = {‘a‘:10,‘b‘:20} | 结 a b a,b = {10,20,30} | #解构接收与封装数量不一致 错误 a,*b = {10,20,30} | 果 10 [20, 30] [a,b] = (1,2) | 1 2 [a,b] = 10,20 | 为 10 20 (a,b) ={30,40} | 30 40
python3的解构
- 使用 *变量名 接收,但不能单独使用
- 被 *变量名 手机后组成一个列表
示例1:
list = list(range(10)) a,*b,c = list print(a,b,c)
输出结果为:
0 [1, 2, 3, 4, 5, 6, 7, 8] 9
示例2:
list = list(range(10)) *list2 = list print(list2)
输出错误,不能单独使用*变量
*list2 = list ^ SyntaxError: starred assignment target must be in a list or tuple
示例3:
list = list(range(10)) *a,b = list print(a,b)
输出结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8] 9
示例4:
list = list(range(10)) a,*b = list print(a,b)
输出结果为:
0 [1, 2, 3, 4, 5, 6, 7, 8, 9]
示例5:
list = list(range(10)) a,*b,*c,d = list print(a,b,c,d)
输出结果错误,不能使用多个*变量
a,*b,*c,d = list ^ SyntaxError: two starred expressions in assignment
示例6:
a,*b,c = "abcdefg" print(b)
输出结果为:
[‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘]
丢弃变量
- 这是一个惯例,是一个不成文的约定,不是标准
- 如果不关心一个变量,就可以定义该变量的名字为_
- _是一个合法的标识符,也可以作为一个有效的变量使用,但是定义为下划线就是希望不要被使用,除非明确知道这个数据需要使用
- _这个变量本身无任何语义,没有任何可读性
- python中很多库,都使用了这个变量,使用十分广泛,不要在不明确的作用域的情况下使用,导致冲突
示例1:
list = [9,8,7,20] a,*b,c = list x,*_,z = list print(x,z)
输出结果为:
9 20
_是合法的标识符,看到下划线就知道这个变量就是不想被使用
示例2:
list = [2,1,3,5] _,*_,a = list print(_) print(a)
输出结果为:
[1, 3]
5
复杂示例:
取出第二个,第四个,倒数第二个
list = list(range(10)) _,a,_,b,*_,c,_ = list print(a,b,c)
从list = [1,(2,3,4),5]中取4出来
list = [1,(2,3,4),5] _,(*_,a),_ = list print(a)
环境变量JAVA_HOME=/usr/bin,返回变量名和路径
x = ‘JAVA_HOME=/usr/bin‘ env,path = x.split(‘=‘,1) print(env) print(path)
以上输出结果为:
1 3 8
4
JAVA_HOME
/usr/bin
以上是关于python的封装与解构的主要内容,如果未能解决你的问题,请参考以下文章