我有一个Python程序,其中两个变量被设置为'public'
。在一个条件表达式中,我有一个比较var1 is var2
但如果我把它改为var1 == var2
它回来了True
。
现在,如果我打开Python解释器并进行同样的“is”比较,它就成功了。
>>> s1 = 'public'
>>> s2 = 'public'
>>> s2 is s1
True
我在这里错过了什么?
发布于 2018-06-13 15:06:57
is
关键字是对象标识的测试,而==
是一种价值比较。
如果你用is
,如果并且只有当对象是同一个对象时,结果才是真。然而,==
对象的值在任何时候都是相同的。
发布于 2018-06-13 16:20:37
最后要注意的一点是,可以使用Intern函数来确保获得对同一个字符串的引用:
>>> a = intern('a')
>>> a2 = intern('a')
>>> a is a2
True
正如上面所指出的,可能不应该确定字符串上的相等性,但这可能有助于了解是否需要使用某种奇怪的要求。is
。
https://stackoverflow.com/questions/-100005364
复制相似问题