怎样理解python为某些数字预留的常驻内存?
id(4) #不管运行多少次该代码,其返回的值均不变,因为python会保持一些常用的数字常驻内存,不会每次都重新分配内存空间
id('hello world') #每次运行,返回的值均会发生变化,因为每次运行,相当于都在重新分配内存空间
怎样理解python为某些数字预留的常驻内存?
id(4) #不管运行多少次该代码,其返回的值均不变,因为python会保持一些常用的数字常驻内存,不会每次都重新分配内存空间
id('hello world') #每次运行,返回的值均会发生变化,因为每次运行,相当于都在重新分配内存空间
解释器的交互模式下会有一个整数池的概念,[-5,256]之间的数会被放在里面,范围内的数多次被引用地址不会发生变化;但范围外的却会出现地址不同的情况;这里的整数池和常驻内存是否是一个意思?
>>> a =4
>>> b =4
>>> id(a);id(b)
140726194918528
140726194918528
>>> a =257
>>> b =257
>>> id(a);id(b)
2970765407728
2970770258096
>>> a =-7
>>> b = -7
>>> id(a);id(b)
2970770259280
2970765407728
但是仅限于交互模式下 a,b的值超出范围之后它们引用的对象不同,脚本模式下给a、b赋予相同的值,那么它们引用的对象必然相同,true;