zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    解决PKIX:unable to find valid certification path to requested target 的问题
    Linux 上的常用文件传输方式介绍与比较
    用VNC远程图形化连接Linux桌面的配置方法
    红帽中出现”This system is not registered with RHN”的解决方案
    linux安装时出现your cpu does not support long mode的解决方法
    CentOS SSH配置
    es6扩展运算符及rest运算符总结
    es6解构赋值总结
    tortoisegit安装、clon、推送
    es6环境搭建
  • 原文地址:https://www.cnblogs.com/robertx/p/10060503.html
Copyright © 2011-2022 走看看