【发布时间】:2011-06-08 10:29:15
【问题描述】:
可能重复:
Python '==' vs 'is' comparing strings, 'is' fails sometimes, why?
嗨。我有一个关于 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
感谢任何有用的提示和想法。
【问题讨论】:
-
Python 2.6,我在第二个例子中得到了
c is d的 True。
标签: python string reference immutability