第二阶段_学习笔记day11_06/23/19 (19 - 27)

1. is 和 ==

  1. ==:用来比较两个变量的值是否相等。
  2. is:用来比较两个变量是否相等。
  3. is判断的临界值:超过临界值之后,a is b 返回的是False
    [-5 256]:小整数池中的数值,全局共享同一份。
    list1 = [1, 2, 3]
    list2 = [1, 2, 3]
    list1 is list2 ------> False
    list1[0] is list2[0] ----->True, 因为1在小整数池中

2. copy和deepcopy的使用

  1. 联系:复制出一个新的备份出来。
  2. 区别:对于普通对象没有区别。
    如果目标对象是一个复合对象(一个对象的成员变量还是对象)的话,有区别。深复制是递归复制;浅复制,只复制直接对象。
    第二阶段_学习笔记day11_06/23/19 (19 - 27)

3. 进制转换问题

  1. 十进制转其他进制:
    1. bin():转换成二进制
    2. oct():转换成八进制
    3. hex():转换成十六进制
  2. 其他进制转换为十进制:
    v1 = int('0o144' , 8):把八进制的数转换为十进制
    v2 = int('ob1100100', 2):把二进制的数转换为十进制
    v3 = int('0x64', 16):把十六进制的数转换为十进制
  3. 手算十进制转换其他进制:转几进制就除以几,直到0为止,倒着取余数。第二阶段_学习笔记day11_06/23/19 (19 - 27)
  4. 手算其他进制转换到十进制:
    第二阶段_学习笔记day11_06/23/19 (19 - 27)

4. 源码、反码、补码问题

https://blog.****.net/Hello_MyDream/article/details/82390005

5. 位运算符的使用

  1. <<: a << n 就相当于: a * 2^n
  2. >>: a >> n 就相当于:a // 2^n
  3. & 与:两个二进制的操作数,全为1,结果为1;其他情况,为0
  4. | 或:两个二进制的操作数,只要有一个为1,结果为1;都为0的时候,结果为0。
  5. ^ 异或:两个二进制的操作数,相同为0,不同为1。对同一个数字异或两次,能得到他本身。
  6. ~ 取反:第二阶段_学习笔记day11_06/23/19 (19 - 27)

6. 属性私有化问题

  1. _xx:
    _PI = 3.14
    在某个模块中,如果变量是 “ _xx ” 的形式,室友from import * 的方式,无法使用。
  2. __xx__私有属性/私有方法
    名字重整:_类名__私有属性名
    _类名__私有属性名
  3. xx:主要用于方法
    init; del; new; str:magic method
    自定义方法避免与魔法方法崇明
  4. xx_:用来区分变量名/方法名

7. 使用property简化私有属性的访问方式;@property取代get和set方法

  1. 使用property简化私有属性的访问方式:
    第二阶段_学习笔记day11_06/23/19 (19 - 27)
  2. @property装饰器:
    第二阶段_学习笔记day11_06/23/19 (19 - 27)