python代码块用什么表示_python代码块和小数据池

id和is

在介绍代码块之前,先介绍两个方法:id和is,来看一段代码

1 #name = "Rose"

2 #name1 = "Rose"

3 #print(id(name))

4 #print(id(name1)) # 两个id相同

5 #print(name == name1) # True

6 #print(name is name1) # True

执行结果

2257847297000

2257847297000True

True

Process finished with exit code 0

再来看一段代码

1 l1 = [1, 2, 3]2 l2 = [1, 2, 3]3 print(id(l1))4 print(id(l2)) #两个id不一样

5 print(l1 == l2) #True

6 print(l1 is l2) #False

执行结果

1403309626952

1403309626888True

False

Process finished with exit code 0

发现规律了吗?id是获取内存地址,is是判断两个数据的内存地址是否相同,这与==是不一样的,==是判断两个数据的值是否相同。

代码块

什么是代码块?

代码块是python程序的一个单元,一个模块,一个函数,一个类,一个文件都是一个代码块;在cmd命令行里,一条命令就是一个代码块

代码块有什么用?

python在执行一个代码块的初始化对象命令时,会将其名称和值存储在字典中,在之后遇到新的初始化对象命令时,就会检查其值是否在字典里,如果存在,会将其重用,也就是后一个对象与之前的对象指向同一个值,这既是代码块的缓存机制。看到这里你可能就明白了代码块缓存机制的好处:就是节省内存;提高效率。因为如果没有缓存机制的话就要重新开辟内存,开辟内存不仅要消耗内存,还会耽误时间。看到这里有人就可能会问了:既然缓存机制有这么多好处,那为什么不在全局而只是在代码块里使用呢?

满足缓存机制则他们在内存中只有一个,也就是id相同。

代码块缓存机制的适用范围:int(float),bool,str

int(float):任何数字在同一代码块下都会复用。

bool:True和False在字典中会以1,0方式存在,并且复用。

str:几乎所有的字符串都会符合缓存机制

小数据池

小数据池,也称为小整数缓存机制,或者称为驻留机制等等

小数据池是针对不同代码块之间的缓存机制,其适用范围也是int(float),bool,str

int: -5~256

bool: 都满足

str: 满足一定规则的会驻留

1 #l1 = [1, 2, 3]

2 #l2 = [1, 2, 3]

3 #print(id(l1))

4 #print(id(l2)) # 两个id不一样

5 #print(l1 == l2) # True

6 #print(l1 is l2) # False

总结

如果在同一代码块下,则采用同一代码块下的换缓存机制。

如果是不同代码块,则采用小数据池的驻留机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值