x = 'a b'
y = 'a b'
x is y
False
为什么会是 false 呢? 空格有什么特殊的地方么?
# a is b 判断的是 id(a) == id(b), 你打印他们的id,明显不同,所以为false
print id(x)
pirnt id(y)
如果想字符串比较请直接 a==b
ps:
Python中的对象包含三要素:id、type、value。其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值。is判断的是a对象是否就是b对象,是通过id来判断的,==
判断的是a对象的值是否和b对象的值相等,是通过value来判断的
摘第一个答案的第一句话:每个python的实现都可以自由如何判断是寻找已经存在的相同值的对象引用还是分配新的空间
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
is
是比较对象==
是比较值对于字符串,你也可以用
is
比较,前提是要人工对字符串进行intern
.对于空格的问题,是因为Python只会自动对
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
这样的字符串进行intern
处理参考: intern
对PyStringObject的认识(Intern机制)
intern处理的字符串可以在这找到