示例1:
bush2Image.src = 'bush2.png';
Example2:
>>>a,b='a-b','a-b'
>>>a is b
True
这里,示例1和示例2显示了不同的结果。 有人可以向我解释为什么会这样吗?
答案 0 :(得分:2)
is
运算符检查变量的身份。即id(var)
。 is
运算符不检查是否相等,而是检查身份。因此,在您的情况下,这两个变量都指向相同的内存位置。您可以使用id
看到它。
>>> a='a-b';b='a-b'
>>> a is b
True
>>> id(a)
2885821331920
>>> id(b)
2885821331920
因此Python仅对两个immutable
变量使用相同的内存位置,而不是创建新的内存位置以减少内存浪费。
对于您的情况,在第一个示例中,它分配了相同的标识,而在第二个示例中,它没有分配相同的标识。
一旦更改了变量的值,它的内存位置就会更改,并且会发生这种情况。
>>> b = 'new' # Changing value
>>> id(a)
2885821331920
>>> id(b)
2885782761064
>>> a is b
False
如果您正确地想测试是否相等,那么使用==
运算符可能会更好。