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