id,is和==
1. id
id就是内存地址,可以通过id()方法获取内存地址
每次创建一个对象,就会在内存中开辟一块空间,内存地址就是这个空间的唯一标识
2. is
is判断的是两边的内存地址,如果内存地址相同证明两边指向的是同一个内存地址
3. ==
== 比较两端值是否相等
代码块
Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元执行的。
代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。
代码块的缓存机制
- 机制内容
在同一个代码块内,进行初始化时会检查值是否已存在,如果存在就将值拿来用。这个机制使用于int、str和bool类型。 - 具体规则
- int : 只要内容相同就采用相同地址
- bool : 布尔值以0和1存在内存中,而且进行复用
- .str : 几乎所有字符串都符合缓存机制
字符串乘法并且乘数为1时,任何字符串都符合缓存机制
字符串乘法并且乘数大于等于2时,仅字母、数字、下划线,并且总长度不大于20,符合缓存机制
如果需要验证代码块,需要在脱离小数据池的环境进行测试
小数据池
小数据池也叫做小整数缓存机制,或驻留机制等
-
机制内容
在不同代码块,采用小数据池的驻留机制。 -
具体规则
-
int : 数字范围在-5~256间,符合缓存机制
-
bool : 布尔值以0和1存在内存中,而且进行复用
-
.str : 长度为1时默认采用小数据池
字符串乘法并且乘数为1时,仅含大小写字母,数字,下划线,默认驻留。
字符串乘法并且乘数大于等于2时,仅含大小写字母,数字,下划线,总长度<=20,默认驻留。