Skip to main content
 首页 » 编程设计

python之"A is not B"与 "A is (not B)"

2025年05月04日9yxwkf

我有点害怕“不是”运算符,以及当“是(不是 X)”时被解释为“不是 X”的可能性。确实存在一些表达式 A 和 B 这样:

A is not B 

不同于

A is (not B) 

?

附录。 使用此运算符是否被认为是好的做法?难道 不应该 (A is B) 是首选吗?

请您参考如下方法:

它们绝对不同。后一种情况首先在 bool 上下文中评估 not X,然后检查这两个对象是否是同一对象(True 或 假)。

考虑:

False is not [] 

这个表达式很简单 True 因为 False 和 [] 是完全不同的对象。 1

对比

False is (not []) 

这个表达式是 False 因为 not [] 评估为 True 和 False 和 True 是不同的对象。

当然,这只是一个例子。如果您不显式使用 False 和 True,则查找示例会变得更加容易,因为第二个表达式始终为 False 并且第一个表达式(几乎)总是 True...

3 is not 0   # True 
3 is (not 0)   # False 

1注意 is not是一个单一操作符,与not in相同。