隐式布尔值,可变与不可变类型,赋值运算符,身份运算和if判断
1.1 隐式的布尔值
    所有的值都有隐式的布尔值
    隐式的布尔值为False的有0 , None, 空
    逻辑运算时算到哪个位置结束就把那个位置的值当做结果返回
2.1 可变类型:list, dict
    在值改变的情况下,id号不变,也就是说内存地址不变,证明就是在改变原来内存空间中的堆中的值,即原值可变。
2.2 不可变类型:int, float, str
    在值改变的情况下,id号也跟着变了,也就是说内存地址变了,证明不是在改原来内存空间的值,而是申请了新的内存空间,产生了新的值,即原值不可变。
2.3 注意
    字典的value可以是任意类型,但是字典的key必须是不可变类型。
    可哈希类型就是不可改变类型,,不可哈希类型就是可变类型.
3.1 增量赋值
    x + 1 = x  ---> x += 1
    x - 1 = x  ---> x -= 1
    x * 2 = x  ---> x *= 2
    x / 3 = x  ---> x /= 3
    x // 3 = x  ---> x //= 3
    x % 3 = x  ---> x %= 3
    x ** 5 = x  ---> x **= 5
3.2 链式赋值
    x = y = z =123
3.3 交叉赋值
    x, y = y, x
3.4 解压赋值
    3.4.1 解压取值
        salaries = [1, 2, 3, 4]
        mon1, mon2, mon3, mon4 = salaries
    3.4.2 取前几位数
        mon1, mon2, *_ = salaries
    3.4.3 取后几位数
        *_, mon3, mon4 = salaries
    3.4.4 取前后两边的数值
        mon1, *_, mon5 = salaries
    注意:对于dist字典类型,解压赋值取出来的是字典的key
            列表类型解压赋值时可以取出直接的值
            ll = ["liyong", 49, 'richer'],
            a, b = ll[0][0], ll[0][1]
            print(a, b)   #liyong 49
            字典类型解压赋值时,只能取出对应的key
            lll = {'name': 'liyong', 'age': 49, 'hoppies': 'work'}
            a, b , *_= lll
            print(a, b)  # name age
4.1 身份运算符 is, ==
    is 判断的是内存中的id是否相等
    == 判断的是值是否相等
    is判断的结果为True, 即二者的id是否一样,即二者的内存地址一样,即二者是否就是一个东西,即值一定相等。
    如果==判断的结果为True, 即二者的值相等,那么二者的内存地址可能不一样。
    如果要判断一个变量是否等于None, True, False,推荐用is去判断。
    is为True,则值一定相等。
    ==为True,则值不一定相等。
5.1 什么是if判断
    判断条件是否成立 ,成立做什么事,不成立做什么事。
5.2 为何要有if判断
    为了控制计算机能够像人一样去完成判断的过程
5.3 如何用if判断
    if判断完整的语法
      if 条件1:
          子代码块1
      elif 条件2:
          子代码块2
      elif 条件3:
          子代码块3
      。。。。
      else:
          子代码块N
    必须要有if , 只有一个if是可以的。
    if判断可以嵌套if