pka*_*mol 9 python string equality python-3.5
在Python交互式会话中:
In [1]: a = "my string"
In [2]: b = "my string"
In [3]: a == b
Out[3]: True
In [4]: a is b
Out[4]: False
In [5]: import sys
In [6]: print(sys.version)
3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]
Run Code Online (Sandbox Code Playgroud)
另一方面,运行以下程序时:
#!/usr/bin/env python
import sys
def test():
a = "my string"
b = "my string"
print(a == b)
print(a is b)
if __name__ == "__main__":
test()
print(sys.version)
Run Code Online (Sandbox Code Playgroud)
输出是:
True
True
3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]
Run Code Online (Sandbox Code Playgroud)
为什么a is b在上述两种情况下会有不同的结果?
我知道这个答案(当然还有的差异之间==和is运营商!这是个问题点!),但不a与b同一对象也是在第一种情况?(interpeter?)因为它们指向相同的(不可变的)字符串?