• 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文件中只要顶行写都是代码块,同一个代码块的内存地址是一个的。

     

  • 相关阅读:
    Http Get Post put delete
    YII AR查询方法
    YII CJson类
    Yii 配置文件
    linux大文件分割 split命令
    chrome插件 postman插件 接口测试、API & HTTP 请求调试工具
    Yii 实现restful
    restful理解
    how tomcat works 读书笔记(一)----------一个简单的webserver
    HDU2206 IP的计算 【经典题】
  • 原文地址:https://www.cnblogs.com/sanzangdashi3/p/9924478.html
Copyright © 2020-2023  润新知