1. 小数据池:
目的:缓存我们字符串,整数,布尔值,在使用的时候不需要创建过多的对象。
小数据池只针对:整数(int)、字符串(str)、布尔值(bool),其它数据类型不存在驻留机制。
优点:能够提高一些字符串、整数的处理速度,省略创建对象的过程。
缺点:在“池”中创建或者插入新的内容会花费更多的时间。
对于int(整数): -5~256是会被加到小数据池中的. 每次使用都是同一个对象.
对于字符串:
1. 如果字符串的长度是0或者1, 都会默认进行缓存
2. 字符串长度大于1, 但是字符串中只包含字母, 数字, 下划线时才会缓存
3. 用乘法的到的字符串. ①. 乘数为1, 仅包含数字, 字⺟, 下划线时会被缓存. 如果
包含其他字符, 度<=1 也会被驻存, ②. 乘数大于1 . 仅包含数字, 字母, 下划
线这个时候会被缓存. 但字符串长度不能小于20
4. 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容.
代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存.
如果涉及计算。尊崇上面的规则如果跨代码块,按照上面的规则执行的。
2. is 和 == 的区别:
== 判断走哦有两段的值是否相等,是不是一致。
is 判断左右两端的内容的内存地址是否一致,如果返回Ture,那可以确定这两个变量使用的是同一个对象。
( 可以这样认为, 内存地址相同,值一定相等;但值相等,内存地址不一定相同)
3.编码的补充;
1.python2中默认使用的编码是ASCLL码,所以不支持中文,如果需要在python2中更改编码,
需要在文件的开始编写:
# -*- encoding:utf-8 -*-
python3中:内存中是用的是unicode码。
编码回顾:
1. ASCII : 最早的编码. 里面有英文大写字母, 小写字母, 数字, 一些特殊字符. 没有中文,
8个01代码, 8个bit, 1个byte
2. GBK: 中文国标码, 里面包含了ASCII编码和中文常用编码. 16个bit, 2个byte
3. UNICODE: 万国码, 里面包含了全世界所有国家文字的编码. 32个bit, 4个byte, 包含了
ASCII
4. UTF-8: 可变长度的万国码. 是unicode的一种实现. 最小字符占8位
1.英文: 8bit 1byte
2.欧洲文字:16bit 2byte
3.中文:24bit 3byte
综上, 除了ASCII码以外, 其他信息不能直接转换.
在python3的内存中. 在程序运行阶段. 使用的是unicode编码. 因为unicode是万国码. 什么内
容都可以进行显示. 那么在数据传输和存储的时候由于unicode比较浪费空间和资源. 需要把
unicode转存成UTF-8或者GBK进行存储. 怎么转换呢. 在python中可以把文字信息进行编码.
编码之后的内容就可以进行传输了. 编码之后的数据是bytes类型的数据。
编码和解码的编码格式:
decode(解码) 和 encode(编码):
python3内存中使用的是unicode。
unicode => utf-8 encode("utf-8")
utf-8 => unicode decode("utf-8")
utf-8和gbk不能直接转换
bytes是字符串的另一种表示形式