Python Pylint抱怨用';是';

Python Pylint抱怨用';是';,python,python-3.x,equality,pylint,Python,Python 3.x,Equality,Pylint,考虑以下代码片段: my_string = 'asdf' print(my_string is 'xfje') #R0123 Pylint在第二行返回一个建议R0123,我在第二行中找不到该建议。不过,在本书中提到了这一点: 文字比较(R0123): 比较到文字在将对象与文字进行比较时使用,这通常是您不想做的,因为您可以比较到与预期完全不同的文字 这个解释对我毫无帮助。我知道在两个字符串对象之间使用is进行比较可能会导致不同于预期的结果,但对于对象与文本的比较,它与==相同。当使用==时,错误

考虑以下代码片段:

my_string = 'asdf'
print(my_string is 'xfje') #R0123
Pylint在第二行返回一个建议
R0123
,我在第二行中找不到该建议。不过,在本书中提到了这一点:

文字比较(R0123):

比较到文字在将对象与文字进行比较时使用,这通常是您不想做的,因为您可以比较到与预期完全不同的文字


这个解释对我毫无帮助。我知道在两个字符串对象之间使用
is
进行比较可能会导致不同于预期的结果,但对于对象与文本的比较,它与
==
相同。当使用
==
时,错误消失


为什么不在这里使用
is

is
检查左手参数是否与右手参数具有完全相同的引用。这对于单例的
None
很好,但对于其他类型通常是个坏主意,因为多个实例可以具有相同的逻辑值

例如,考虑以下示例:

>>> my_string = ''.join([c for c in 'xfje'])
>>> print my_string
xfje
>>> print my_string == 'xfje'
True
>>> print my_string is 'xfje'
False

也许你会发现这更有用。”但对于对象与文字的比较,它与
==
“-你是从哪里得到这个想法的?@user2357112我在提示符下尝试了一下,效果如我所料。但是,是的,我没有阅读任何文档。你不应该使用
is
True
False
进行比较。(最后一点)@Coal_uuu很好。编辑并删除了这些示例。Daniel,我不完全确定是否是这种情况-检查
x是否为真
确保
x
不会通过
x==真
x=1