sar*_*had 8 python string reference
这适用于Python 2.6.
我无法弄清楚为什么a和b是相同的:
>>> a = "some_string"
>>> b = "some_string"
>>> a is b
True
Run Code Online (Sandbox Code Playgroud)
但是如果字符串中有空格,则它们不是:
>>> a = "some string"
>>> b = "some string"
>>> a is b
False
Run Code Online (Sandbox Code Playgroud)
如果这是正常行为,有人可以解释发生了什么.
编辑:免责声明!这不用于检查相等性.我其实想向其他人解释"是"只是为了检查身份,而不是平等.从文档中我了解到以这种方式创建的引用将是不同的,每次都会创建一个新的字符串.当我无法证明自己的观点时,我给出的第一个例子就把我扔了!
编辑: 我知道这不是一个错误,实习对我来说是一个新概念. 这似乎是一个很好的解释.
Gle*_*ard 10
Python可能会也可能不会自动实习字符串,这将确定字符串的未来实例是否将共享引用.
如果它决定实习字符串,则两者都将引用相同的字符串实例.如果没有,它将创建两个恰好具有相同内容的单独字符串.
一般来说,您不必担心这是否发生; 你通常想要检查相等性,a == b而不是它们是否是同一个对象a is b.
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |