可能是重复问题:
Python中'=='和'is'比较字符串时,为什么'is'有时会失败?
嗨,我有一个关于Python在何时以及如何使用引用的问题。
我这里有一个例子,我能够理解它。
a = "cat"
b = a
a is b
True
这很有道理。但是这里出现了我不理解的东西。
a = "cat"
b = "cat"
a is b
True
c = 1.2
d = 1.2
c is d
False
e = "cat"
f = "".join(a)
e is f
False
为什么 a is b 返回 True 而不是 c is d?这两种类型都是不可变的,对吧?使用浮点数时可以正常工作。我想这可能是一种优化方式,但我很乐意接受任何答案。
我还尝试了其他一些东西,并得到了以下结果:
a = "cat"
b = "c"
c = b+"at"
a is c
False # Why not same as setting c = "cat"
d = "cat"+""
a is d
True # Probably same as setting d = "cat"
e = "c"+"at"
a is e
True # Probably same as setting e = "cat"
我猜这里是同样的问题,但为什么使用变量b创建“cat”时没有返回True呢?
我使用的是Python 2.5,如果有任何不同之处,请指出。
欢迎提供任何有用的提示和想法。
c is d
返回True。 - Maxim Sloyko