is 和 == 疑惑
a =b =
print(a is b)
print(a == b)
False
True
a = 123
b = 123
print(a is b)
print(a == b)
True
True
第二段为什么 a is b为True??? 123因为是纯数字所以不独立占一段内存?? is 判断是不是同一个。
>>> a =
>>> c =a
>>> c is a
True
== 判断是不是相同。
is 是内存地址完全相等,可以用id()函数查看; ==只要值相等就行了
第一个 就是正常的分别创建了两个列表,因为列表是可变的,你又是分别创建的,不是用b=a这样的浅复制,所以这两个就是占用不同内存的两个列表,本质是不同的;
而第二个呢,我认为是内存中又热恩这个数,然后这个数字本身在内存里不会变的,所以当你重复创建一个相同大小的数时,它就不再重新分配内存空间,而是让a,b指向同一个地址上的值(毕竟当你用a=1来改变a的值时,不是改变了123这个地址上的值,而是把a指向了表示1的内存地址上了)。因此,对于同一个数,他们 用is也是相等的
页:
[1]