id、is、==、代码块
id
- id(相当于身份证号码)
- id是唯一的,但每次都会变化
- 相同可变类型的id每次都不同,相同不可变类型的id每次都相同
a=[1,2,3]
b=[1,2,3]
print(id(a))
print(id(b))
# 得
# 1364301406792
# 1364301406856
c='xiaoxiannv'
d='xiaoxiannv'
print(id(c))
print(id(d))
# 得:
# 1364301869440
# 1364301869440
is
- 判断的是内存地址是否相同
a=[1,2,3]
b=[1,2,3]
print(a is b)
得:False
==
- 比较的是两边的值是否相等
a=[1,2,3]
b=[1,2,3]
print(a==b)
得:True
代码块
-
代码块:我们所有的代码都需要代码块执行
-
一个模块,一个函数,一个类,一个文件等都是一个代码块
-
交互命令(命令行中)一行就是一个代码块
-
两个机制:
- 同一个代码块下的缓存机制:
- 前提条件:同一个代码块内
- 机制内容:初始化命令时 先检查内存中的字典有无已创建的相同的数据,没有时创建新的内存地址,如果有相同数据, 则会共用同一内存地址
- 适用对象:int、bool、str
- 优点:提升性能,节省内存
- 不同代码块下的缓存机制(小数据池)
- 前提条件:不同一个代码块内
- 机制内容:不同一个代码块内,内存会开辟两个空间
- 1.-5~256 范围内的数字,
- 2.以及一定规则的字符串
- 适用对象:
1.-5~256 范围内的数字,
2.以及一定规则的字符串 - 优点:提升性能,节省内存
- 同一个代码块下的缓存机制:
-
总结:代码块有两个缓存机制,同一个代码块下的缓存机制和不同代码块下的缓存机制,同一个代码块下的缓存机制是初始化命令是先判断内存中是否已经创建相同的数据,如果已经创建则使用相同的内存地址,如果没有创建则创建一个新的内存地址。不同代码下的缓存机制是小数据池,小数据池是在内存中提前开辟两个空间一个存储的是-5-256的数字,另一个是存储一定规则的字符串,缓存机制的优点:提升性能,节省内存。