zoukankan      html  css  js  c++  java
  • python之内存与编码的那点事

    一、初始编码

    ASCII 码不支持中文 是py2版本中的默认编码

    ​Unicode 万国码, 英文使用16位(即两个字节​),中文使用32位(四个字节)

    ​utf-8 美国最少使用八位(1字节), 欧洲使用十六位(2字节), 亚洲是二十四位​(3字节) #最常用的编码方式

    ​utf-16 最少使用十六位​

    ​gbk(国标)国家标准编码方式​ 其中中文要用十六位(2字节)表示,英文使用8位(1字节)

    单位换算:

    8位(bit) = 1字节(byte)

    1024(byte) = 1(kb)​​​​​

    各种编码方式的发展:

    首先是ASCII码,然后由于其中没有各国的语言,所以就出现了各国自己的国标码,由于国家之间的国标码没有统一互不兼容,会出现乱码,所以就出现了包含各国语言的unicode码,但是由于其至少要使用两个字节十六位表示,进行读取的时候会很浪费空间,故最后出现了utf-8这一编码方式,是可以节省空间的

    二、二次编码

    1.编码即编译的其中一步:就是将代码转换为字节码的过程.由于python属于编译型语言,故需要先将的代码编译成字节码,在转换成机器码给计算机识别,故将代码转换为字节码就是实现代码的第一步,我们一般用.encode()方法进行编码,.decode()的方法进行解码,用什么编码方式编的就用什么解

    a = '你好黑'
    a.encode('gbk')   #编码​​​ 括号里放编码方式,将其变为什么编码
    a.decode(''gbk')    #解码 ,必须用同一种编码方式

    注意:

      1.用什么编码就用什么解码

      2.在国内windows系统默认使用gbk编码方式

      3.bytes 字节 是一个数据类型 是用来存储和传输

    三、小数据池

    注意:小数据池只针对数字,字符串和布尔值!​

    1.bool值 ,True False,i无论创建多少个变量指向它,他在内存中的地址都是一个

    2.数字的小数据池范围是-5到256

    3.字符串小数据池的规则:​

      1.自己定义的且不含有特殊字符的字符串没有限制,有特殊字符的字符串长度必须是为0或者1时,才能没有限制

      2. 没有特殊字符的用乘法得到的字符串时:

    ​     a.当乘数为 0或者1的时候,是,是可以使用小数据池的

        b.当乘数大于1的时候,字符串乘完以后的字符串数量y​ 要小于等于20.​​

      3.当含有特殊字符进行乘法运算时:

        a.​​字符串的长度要大于一

    ​##满足以上的条件的数据才能使用小数据池!!!

    要注意:"​代码块内的缓存机制是和代码块之间的缓存机制不同的!

        在执行一个代码块内的​命令时,python会先检查这个值是不是已经存在,如果存在,则会直接调用这个存在的数据,这样就会导致在一个代码块中的两个变量指向同一个内存地址.

      多个代码块中是使用小数据池的.​​​!!!!

        在进行,不同的代码块之间的命令时,pythonh会先查询小数据池,看看这个数据是否是满足小数据池的数据e如果是那会指向同一个地址,所以当两个代码块执行的时候,不满足小数据池的数据会得到两个不同的对象

      综上所述,要通过 is 查看两个数据是否是一个对象,主要是查看内存地址是否一样.

    四、id  is  ==

    1.用法

    id :  #查询内存地址

    == :  #是判断两边的数据是不是一样

    is :  #是判断两边的数据是不是一个 内存地址

    总结: ‘ ==’ 是 比较 符号 两边表达式 的值是否相等,而 ‘is' 是比较两边的对象是否是同一个内存地址。如内存地址相等,那么这两边指向同一个内存空间。​

    可以说,如果内存地址相同,那么值一定相同; 值相同,内存地址不一定相同。​.

    a = 100

    b = 100        ​​ 这两个是在一个代码块中 ​

    ####  Python 程序是由代码块构造的,块是一个python程序的文本,它是作为一个执行单元的。

    代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。在一个py文件中只要顶行写都是代码块,同一个代码块的内存地址是一个的。

     

  • 相关阅读:
    Unity 3D Customizing Your Workspace 自定义工作区
    Unity3D 学习界面 Learning the Interface
    【Python】函数功能描述
    没有显示器的情况下安装和使用树莓派
    【Linux】03-Linux用户权限相关命令
    【Linux】02-Linux远程管理常用命令
    【Linux】01-Linux基本命令
    【12c】DataGuard构建物理备用数据库(Cloud Control方式)
    【12c】一文教你详细了解如何安装Oracle Enterprise Manager Cloud Control 12c
    【12c】新特性:一文带你详细了解Oracle 12c 数据库的自动数据优化(ADO)
  • 原文地址:https://www.cnblogs.com/sanzangdashi3/p/9924478.html
Copyright © 2011-2022 走看看