day06

1. is 和 == 的区别

1. is 判断内存地址
  # id()函数-----获取内存地址
  a
= 'alex' # 字符串   print(id(a)) # 2917013018360 内存地址   n = 10 # 数字   print(id(n)) # 140713995195712   li = [1,2,3] # 列表   print(id(li)) # 1504954376776   a = 'alex' # 字符串   b = 'alex'   print(a is b) # Ture   n = 10 # 数字   n1 = 10   print(n is n1) # Ture
  # 小数据池(常量池): 把我们使用过的值存储在小数据池中,供其他的变量使用
  # 小数据池给数字和字符串使用,其他数据类型不存在
      (1)数字小数据池的范围   -5~ 256, 超过这个范围, 内存地址就不一样.
      (2)字符串中如果有特殊字符他们的内存地址就不一样
      (3)字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一样.

  # 数字
  n = -6
  n1 = -6
  print(n is n1)    # Flase

  n = 257
  n1 = 257
  print(n is n1)    # Flase

  n = 5 // 2
  n1 = 2
  print(n is n1)     # Ture

  # 字符串
  a = 'alex@'
  a1 = 'aelx@'
  print(a is a1)     # Flase

  a = 'a' * 22
  b = 'a' * 22
  print(a is b)     # Flase

  # 布尔值
  a = True
  b = True
  print(a is b)     # Ture

  # 列表,元组和字典没有小数据池
  li = [1,2,3]  # 列表
  li2 = [1,2,3]
  print(li = li2)     # False

  tu = ('燃哥','周杰伦')  # 元组
  tu1 = ('燃哥','周杰伦')
  print(tu is tu1)      # False

  dic1 = {'name':'alex'}  # 字典
  dic = {'name':'alex'}
  print(dic1 is dic)      # False
2. ==   比较   比较是值

    a = 'alex'  # 字符串
    b = 'alex'
    print(a == b)  # Ture

    n = 10  # 数字
    n1 = 10
    print(n == n1)  # Ture

    li1 = [1,2,3]  # 列表
    li2 = [1,2,3]
    print(li1 == li2)  # Ture

    dic1 = {'name':'alex'}  # 字典
    dic = {'name':'alex'}
    print(dic1 == dic)  # Ture
# 总结
    == 比较   比较的两边的值
    is 比较   比较的是内存地址   id()

2. 回顾编码

1. ASCII:
            不支持   中文
            支持     英文  数字  符号
            8位      一个字节
2. GBK  国标:(兼容ASCII)
            支持  中文,英文,数字,符号
            英文  16位  两个字节
            中文  16位  两个字节
3. unicode:(兼容ASCII)
            支持   中文,英文,数字,符号
            英文   32位  四个字节
            中文   32位  四个字节
4. UTF-8: 长度可变的unicode. 最少用8位
            英文   8位   一个字节
            中文   24位   三个字节

python2 只能用ASCII
python3中 程序运行阶段 使用的是unicode   显示所有的内容
bytes类型, 传输和存储都是使用bytes.

pycharm 存储的时候默认是是使用utf-8    

3. 编码和解码

1. encode(编码方式)  编码. 获取到的是编码后对应的字节(解码之后的结果是bytes 'b')
    s = 'alex'
    print(s.encode('utf-8'))  # b'alex'
2. decode(解码方式)  解码. 将编码后的字节编码成对应的明文(把 bytes变回字符串)
  s = '饿了'
  s1 = s.encode('gbk')       '
  print(s1)  # b'\xb6\xf6\xc1\xcb'
  print(s1.decode('gbk'))  # 饿了

注意: 用什么进行编码就要用什么进行解码 不然会懵逼

 

posted @ 2019-08-01 12:16  magickang  阅读(124)  评论(0编辑  收藏  举报