1, 封装
将多个值使用逗号分割, 组合在一起
本质上, 返回一个元组, 只是省掉了小括号
- # -*- coding:utf-8 -*-
- # version:python3.7
- t1 = 1,2
- t2 = (1,2)
- print(t1,type(t1))
- print(t2,type(t2))
执行结果:
- (1, 2) <class 'tuple'>
- (1, 2) <class 'tuple'>
2, 交换(封装, 解构)
- # -*- coding:utf-8 -*-
- # version:python3.7
- a = 2
- b = 3
- # temp = a
- # a = b
- # b = temp
- a, b = b, a #等号右边使用了封装, 先封装成一个 tuple, 而左边就使用了解构
- print(a,b)
执行结果:
3 2
3, 解构:
把线性结构的元素解开, 并顺序的赋给其它变量
左边接纳的变量数要和右边解开的元素个数一致
- # -*- coding:utf-8 -*-
- # version:python3.7
- lst = [3, 5]
- first, second = lst
- print(first, second)
执行结果:
3 5
使用 * 变量名接收, 但不能单独使用
被 * 变量名收集后组成一个列表
- # -*- coding:utf-8 -*-
- # version:python3.7
- lst = list(range(10))
- head, *mid, tail = lst
- print(head)
- print(mid)
- print(tail)
执行结果:
- 0
- [1, 2, 3, 4, 5, 6, 7, 8]
- 9
- *d = range(10) #左边一个变量, 不解构
- *x, *y = range(10) #两个 * 号, 不解构
4, 丢弃变量:
这是一个惯例, 是一一个不成文的约定, 不是标准
如果不关心一个变量, 就可以定义改变量的名字为_
_是一个合法的标识符, 也可以作为一个有效的变量使用, 但是定义成下划线就是希望不要被使用, 除非你明确的知道这个数据需要使用
- # -*- coding:utf-8 -*-
- # version:python3.7
- # 想要 4 的值
- lst = [1,(2,3,4),5]
- _, (*_, val), _ = lst
- print(val)
执行结果:
- 4
- #_是合法的标识符, 看到下划线就知道这个变量就是不想被使用, 不过也可以使用输出: print(_)
5, 总结
_这个变量本身无任何语义, 没有任何可读性, 所以不是用来给人使用的
Python 中很多库, 都使用这个变量, 使用十分广泛. 请不要在不明确变量作用域的情况下, 使用_导致和库中_冲突
6, 练习
1 > 从 lst = list(range(10)) 这样一个列表, 取出第二个, 第四个, 倒数第二个
- # -*- coding:utf-8 -*-
- # version:python3.7
- lst = list(range(10))
- _, l1, _, l3, *_, l8, _ = lst
- print(l1,l3,l8)
执行结果:
1 3 8
2 > 环境变量 JAVA_HOME=/usr/bin, 返回环境变量名和路径
- # -*- coding:utf-8 -*-
- # version:python3.7
- val = "JAVA_HOME=/usr/bin"
- val_name, *_ , val_url = val.split("=")
- print(val_name)
- print(val_url)
执行结果:
- JAVA_HOME
- /usr/bin
3 > 对列表 [1,9, 8, 5, 6, 7, 4, 3, 2] 使用冒泡法排序, 要求使用封装和解构来交互数据
- # -*- coding:utf-8 -*-
- # version:python3.7
- lst = [1,9, 8, 5, 6, 7, 4, 3, 2]
- length = len(lst)
- for i in range(length):
- flag = True
- for j in range((length-1-i)):
- if lst[j]> lst[j+1]:
- lst[j], lst[j+1] = lst[j+1], lst[j]
- flag = False
- if flag:
- break
- print(lst)
执行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
来源: http://www.bubuko.com/infodetail-3484494.html