python内存优化机制中的小秘密

首先我们先来看一个这样的问题:

1 a = -5
2 b = -5
3 print(a is b)
4 
5 c = -6
6 d = -6
7 print(c is d)
8 
9 # 输出结果是?

大多数没踩过这个坑的小伙伴的答案要么都是True,要么都是False。

但是,,,其真正的结果并不是如此。。。

是不是感觉一脸懵逼???

正确答案是:True 和 False

是不是会在心里说what???  这不合乎逻辑啊。。。

但是事实就是这样。

这是由于python的内存优化机制造成的,Python在存储一些数字的时候,对内存做了相应的优化,导致了两个变量被赋值为同样小于-5的数字时,内存地址不一样,而对于大于-5的数字,其内存地址却是一样的。(python认为大于-5的数字使用对于用户来说,会在程序中像这样给变量赋值的次数较多,处于节省内存的考虑,将这样数字大于-5的变量都指向了同一的内存地址,达到节省内存的目的)

猜你喜欢

转载自www.cnblogs.com/aberwang/p/10403549.html