is:判断的是两个内存地址是否一致

==:判断的是两个变量的值是否一致



Python高级编程——2.is和==

以上例子说明了is和==的区别,即a和b的值相等,但是在内存中的地址不一样,所以a==b返回的是True,a is b返回的是False。声明a=1000时,是在堆内存中为a开辟了一个值为1000的空间,a中保存的是这个数值的地址,b=1000,这时在内存中又开辟了一个值为1000的地址,在b中保存了该地址,这个地址与a中必然不同。

但是有一点需要注意的是,在数值在-5~256之间时,a==b和a is b返回的都是True,请看下面的例子:


Python高级编程——2.is和==

这是因为在堆内存中开辟了一个小整型缓存区,数值在-5~256之间,这时在声明变量赋值在此数值范围中间时,变量a的引用就指向缓存区-5的位置,在a中保存的是-5的地址,b=a也就是b也保存了a中-5的地址,所以地址和值都是相同的。也是就说数值处于-5~256之间,系统不会再另外开辟空间,而是之间将a或者b的引用指向内存缓存区对应值的位置。

关于以上可用下面图示表明:Python高级编程——2.is和==

字符串也是如此,在此不过多赘述。



相关文章:

  • 2021-12-21
  • 2021-07-16
  • 2022-12-23
  • 2021-12-12
  • 2022-01-15
  • 2022-01-11
  • 2021-10-01
  • 2021-12-14
猜你喜欢
  • 2021-12-01
  • 2021-10-03
  • 2021-03-31
  • 2021-12-25
  • 2021-07-26
  • 2021-05-17
相关资源
相似解决方案