• python中的 小数据池 is 和 ==


    1. 小数据池 

      一种数据缓存机制,也被称为驻留机制

      小数据池针对的是:整数 , 字符 , 布尔值 .其他的数据类型不存在驻留机制

      在python中对 -5 到256之间的整数会被驻留在内存中, 将一定规则的字符串缓存. 在使用的时候, 内存中只会创建一个该数据的对象.保存在小数据池中.当使用的时候直接从小数据池中获取对象的内存引用.而不需要创建

    一个新的数据,这样会节省更多的内存区域

       

      优点: 能够提高一些字符串,整数的处理速度.省略创建对象的过程

      缺点: 在池中创建或者插入新的内容会花费更多的时间

    对于字符串:
    1. 如果字符串的长度是0或者1, 都会默认进行缓存
    2. 字符串⻓度⼤于1, 但是字符串中只包含字母, 数字, 下划线时才会缓存
    3. 用乘法的到的字符串 ①. 乘数为1, 仅包含数字, 字母, 下划线时会被缓存. 如果
    包含其他字符, ⽽而长度<=1 也会被驻存, ②. 乘数大于1 . 仅包含数字, 字母, 下划线这个时候会被缓存. 但字符串⻓度不能大于20
    4. 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容

    1.   id() 查看变量的值在内存中的地址

    s = 'robert'
    print(id(s))  # 2669790093584

    2. is 和 ==

    a = 1000
    b = 1000
    print(a == b)
    print(a is b)
    
    # 结果
    True
    False

    在py文件中几乎所有的字符串都会缓存.

      小数据池只针对:整数,字符串,布尔值,其他的数据类型不存在驻留机制

    2. is和==的区别

      is 比较的是内存地址
      == 比较的是内容
      当两个变量指向同一个对象的时候. is是True, ==也是True

    3. 再谈编码

      1. ascii. 有: 数字, 字母, 特殊字符. 8bit 1byte 128 最前面是0
      2. gbk. 包含: ascii, 中文(主要), 日文, 韩文, 繁体文字. 16bit, 2byte.
      3. unicode. 包含gbk,ascii,big5... 32bit, 4byte
      4. utf-8. 可变长度的unicode.


      1. 英文: 8bit,1byte
      2. 欧洲文字: 16bit 2byte
      3. 中文: 24bit 3byte


      不同的编码之间不能随意转换. 中国人gbk和德国人utf-8骂 想要沟通必须通过英文(unicode)(媒介)

      在python3中. 默认的编码是unicode,我们的字符串就是unicode
      在python2中. 默认的编码是ASCII. Cpython.c语言的默认编码是ASCII

      unicode弊端:在存储和传输的时候. 是很浪费的
      在存储和传输的时候不能直接使用unicode. 必须要对字符串进行编码. 编码成bytes类型

      bytes: 字节形式的字符串

      1. encode(编码格式) 编码
      2. decode(编码格式) 解码

      bytes是一种另类的字符串表示形式
      "哈哈哈" => xeexabx13xeexabx13xeexabx13

    编码和解码的时候都需要制定编码格式.
    s = "我是文字"
    bs = s.encode("GBK") # 我们这样可以获取到GBK的⽂文字
    # 把GBK转换成UTF-8
    # ⾸首先要把GBK转换成unicode. 也就是需要解码
    s = bs.decode("GBK") # 解码
    # 然后需要进⾏行行重新编码成UTF-8
    bss = s.encode("UTF-8") # 重新编码
    print(bss)
  • 相关阅读:
    【Py】Python的调包日常——网络类
    【Py】Python的调包日常——转码类
    第09组 Beta冲刺(3/5)
    第09组 Beta冲刺(2/5)
    第09组 Beta冲刺(1/5)
    第09组 Alpha事后诸葛亮
    第09组 Alpha冲刺(6/6)
    第09组 Alpha冲刺(5/6)
    第09组 Alpha冲刺(4/6)
    第09组 Alpha冲刺(3/6)
  • 原文地址:https://www.cnblogs.com/robertx/p/10060503.html
Copyright © 2020-2023  润新知