python – 用’is’替换’==’可比较布尔值是安全的

我做了几个布尔比较:

>>> (True or False) is True
True
>>> (True or False) == True
True

这听起来像==,可以互换布尔值。

有时使用更清楚

我想知道:

在python中预先分配了真假吗?

bool(var)总是返回相同的True(或False)与预先分配的True(或False)?

替换==是否可以安全地比较布尔值?

这不是最佳实践。

我只想知道真相。

你可能不应该需要比较布尔。如果你在做这样的事情:

if some_bool == True:
  ...

…只是把它改成:

if some_bool:
  ...

不需要或==需要。

正如评论者所指出的那样,有理由比较布尔值。如果两个布尔是未知的,并且想知道一个是否等于另一个,则应该使用==或!=而不是或不是(原因如下所述)。请注意,这在逻辑上等同于xnor和xor,它们在Python中不作为逻辑运算符存在。

在内部,应该只有two boolean literal objects(参见C API),如果bool(x)== True,则bool(x)为True,则为True。两个警告:

>这并不意味着x如果x == True,则x是True(但是x = 1)。
>这对于Python(CPython)的通常实现是正确的,但在其他实现中可能不是这样。因此==是一个更可靠的比较。

http://stackoverflow.com/questions/4591125/is-it-safe-to-replace-with-is-to-compare-boolean-values

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 用’is’替换’==’可比较布尔值是安全的