我有点害怕"不是"操作员和"不是X"当"是(非X)"是有意的。确实存在一些表达式A和B,以便:
A is not B
与
不同A is (not B)
附录即可。
使用此运算符是否被视为良好做法?是否应该首选not (A is B)
?
答案 0 :(得分:9)
他们肯定是不同的。后一种情况首先在布尔上下文中计算not X
,然后检查两个对象是否是同一个对象(True
或False
)。
考虑:
False is not []
这个表达式很简单True
,因为False
和[]
是非常明显不同的对象。 1
VS
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
完全相同。
答案 1 :(得分:5)
是:
A = 0
B = 1
尝试一下,你会非常害怕:
>>> A = 0
>>> B = 1
>>> A is not B
True
>>> A is (not B)
False