我在python中得到了一个奇怪的结果。我一直得到错误的结果。
string = '94070'
string[0:2] is '95' or string[0:2] is '94'
返回False,但是当我在值' 94'中进行硬编码时,它会起作用
'94' is '95' or '94' is '94'
返回True。我检查了数据类型,它们都是类型' str'所以我不确定这里发生了什么。
答案 0 :(得分:5)
使用==
代替is
。在Python中,is
运算符执行对象标识检查。 ==
运算符检查两个对象(可能是不同的对象)以查看它们是否包含相同的内容。
答案 1 :(得分:1)
is
是一个身份测试(这是完全相同的对象?),而不是相等测试。虽然is
巧合地工作,但作为某些不属于逻辑单例的事物的实现细节,它不应该像这样使用;使用==
进行价值平等测试。
由于一些相关的可能性,您对'94' is '94'
的测试可以起作用:
当你切掉一些字符串时,没有涉及实习,所以身份测试失败了。
答案 2 :(得分:0)
使用is
查看两个参数是否引用同一个对象,==
查看它们是否具有相同的值。
>>> a = 'this is some text.'
>>> b = 'this is some text.'
>>> a == b
True
>>> a is b
False
>>> a = 'this is some text.'
>>> b = a
>>> a == b
True
>>> a is b
True