home1.gif

1. 封装


什么是封装?封装一般是相对类、对象而言的,把你不想让别人知道细节的东西包起来,对外只暴露个接口。

当前,我们抛开类,只看看在基本数据类型上是怎么应用“封装”的

封装

  • 将多个值使用逗号(,)分割后组合在一起;
  • 本质上,返回的是一个元组,只是省掉了小括号

【实例 1】封装的应用

  1. t = 3, 5 # 相当于 t = (3, 5)
  2. temp = a
  3. a = b
  4. b = temp
  5. # 将 a, b 的值互换,等价于
  6. a, b = b, a

2. 解构


  • 把线性结构的元素解开,并顺序的赋给其它变量
  • 接纳的变量数要和解构开的元素个数一致,比如

【实例 2】解构的应用

  1. lst = [1, 3, 5]
  2. first, second, third = lst
  3. data = list(range(1, 15, 2)) # [1, 3, 5, 7, 9, 11, 13]
  4. first, *other = data
  5. first, *middle, last = data
  6. first, *_, last = data

说明

  1. *var_name,表示接收多个值,元素个数可变的;
  2. 使用 *var_name 接收时,不能单独使用,收集后组成的是一个列表list;
  3. _也是一个变量名,只不过有特别的含义;

丢弃变量(**_**) :

  • _ 变量是一个合法的标识符,也可以作为有效的变量使用;
  • 但有个不成文的规定(非标准),如果是后续不会使用的数据需要找个变量存放,这时就可以把即将要丢弃的数据暂时用 _ 存储下,然后丢弃不用;
  • _ 本身无任何意义,也没有可读性;
  • 有很多第三方库都用到了 ,故请不要在不明确变量作用域的情况下,使用 导致和其他库中的_冲突;

【实例 3】丢弃变量 _ 的应用

  1. user_path = r'JAVA_HOME=/usr/bin/' # 环境变量
  2. key, _, val = user_path.partition('=') # 提取出变量名和值

end1.gif