小整数池
为什么有些变量的值相等,id有时相等,有时却不相等呢
i = 100
j = 100
print(i == j) # True 形式值相同
print(i is j) # True 内存地址id号相同,即引用值相同
n = 10000
m = 10000
print(n == m) # True 形式值相同
print(n is m) # False 内存地址id号不同,即引用值不同
Python解释器会觉得有一些数值会经常被使用(-5到256之间),故当脚本程序运行前就将这些数字写入堆内存中。
当用户定义变量且使用到其中的数值时会直接将该数值的内存地址引用到存在于栈内存的变量名上,这样做极大节省了内存空间。
注意:
关于小整数池的范围一定要注意,(-5,256)
这是Python原生解释器的范围,而使用Pycharm则会扩大这一范围 !!!