Why does string equality not working in this Python code as expected?
本问题已经有最佳答案,请猛点这里访问。
注意:在你去投反对票或结束我的问题,或把它标记为副本之前,让我向你保证,我已经搜索了几十个类似的问题,并在网上搜索了一个多小时,但我仍然没有解决这个问题。没有其他答案解决了我的问题。
问题我有这个python代码:
1 2 3 4 5 6 7 8 9 10 | text = '' text += '<' + '/' + '>' print text, '</>' print repr(text), repr('</>') if text is '</>': print 'Equal' else: print 'Not equal!' |
我只想比较两条弦。出于某种原因,我需要将字符逐个连接到
输出结果如下:
'>' '>'
Not equal!
我刚接触过python,现在使用的是python 2.7。有人能帮忙吗?
你需要使用
例如
假设你有
1 2 3 4 5 6 | >>> foo = 'green eggs and ham' >>> bar = 'green eggs and ham' >>> foo is bar >>> False >>> foo == bar >>> True |
在我的机器上:
1 2 3 4 | >>> id(foo) >>> 52008832 >>> id(bar) >>> 52010560 |
现在,看看这个:
1 2 3 | >>> foobar = bar >>> foobar is bar >>> True |
这是真的,因为我们已经将变量foobar别名为指向引用的bar。显然,它们在这个别名下引用了相同的位置。因此,IS返回真值。
更有趣的是,考虑两个
1 2 3 4 5 6 | >>> foo = 123 >>> bar = 123 >>> foo is bar >>> True >>> id(foo) >>> 1993000432 # == id(bar) |
在我使用Python的整个历史中,我从来没有使用过