一. 小数据池
代码块: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来充当中间媒介