Python基础6_小数据池,编码补充
一. 小数据池
代码块:python程序是有代码块构成的,一个代码块的文本作为python程序的执行单元.
一个模块,一个函数,一个类,甚至每一个command命令都是一个代码块,一个文件也是一个代码块.
eval()和exec()执行的时候也是一个代码块
命令行:我们在控制台CMD中输入的python进入的就是python的command模式,在这里也可以写python程序
二. 小数据池is和==的区别
1. id()
通过id()我们可以查看到一个变量表示的值在内存中的地址
2. is 和 ==
== 判断左右两端的值是否相等
is 判断左右两端的=内存地址值是否一致,如果返回True,那可以确定这两个变量使用的是同一个对象
3. 小数据池
一种数据缓存机制,也被成为驻留机制
小数据池只针对:整数,字符串,布尔值. 其他的数据类型不存在驻留机制
优点:能够提高一些字符串,整数的处理速度,省略了创建对象的过程
缺点:在"池"中创建或者插入新的内容会花费更多的时间
对于数字: -5~256是会被加到⼩小数据池中的. 每次使⽤用都是同⼀一个对象.
对于字符串串:
1. 如果字符串串的⻓长度是0或者1, 都会默认进⾏行行缓存
2. 字符串串⻓长度⼤大于1, 但是字符串串中只包含字⺟母, 数字, 下划线时才会缓存
3. ⽤用乘法的到的字符串串. ①. 乘数为1, 仅包含数字, 字⺟母, 下划线时会被缓存. 如果
包含其他字符, ⽽而⻓长度<=1 也会被驻存, ②. 乘数⼤大于1 . 仅包含数字, 字⺟母, 下划 线这个时候会被缓存. 但字符串串⻓长度不能⼤大于20
4. 指定驻留留. 我们可以通过sys模块中的intern()函数来指定要驻留留的内容.
三. 编码补充
1.python2使用的是ASCII码表,python3使用的是unicode码表
在存储和传输时不能直接用unicode,因为太浪费内存,所以必须对字符串进行编码,转换成bytes类型
2.bytes的表现形式
ASCII码表的内容(英文,数字,特殊字符):原样输出,表现形式和字符串没区别
非ASCII码表的内容(中文): b'\xe6\x88\x91\xe4 这是两个汉字的utf-8的bytes表现形式
gbk或utf-8 --> unicode 用decode()解码
unicode --> gbk或utf-8 用encode()编码
gbk和utf-8不能相互直接转换,需要unicode来充当中间媒介