对于所有内置的Python对象(如字符串,列表,字典,函数等),如果
x为
y,则
x == y也为
True。
不总是。NaN是一个反例。但通常,标识
(is)表示相等
(==)。反之则不成立:两个不同的对象可以具有相同的值。
另外,即使比较
int或
Boolean值,通常还是最好还是默认使用’==’吗?
你可以使用
==比较值,并在
is比较标识时。
比较整数(或通常不可变的类型)时,你几乎总是希望使用前者。有一个优化允许将小整数与进行比较is,但不要依赖它。
对于布尔值,你根本不应该进行比较。代替:
if x == True: # do something
写:
if x: # do something
为了与进行比较None,is None优先于== None。
我一直喜欢使用’is’,因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID的对象。
是的,这就是它的用途。



