Python &引用;A不是B;vs";A是(不是B)“;
我有点害怕“is not”操作符,当“is(not X)”被指定时,“is not X”可能会被解释。确实存在一些表达式A和B,以便:Python &引用;A不是B;vs";A是(不是B)“;,python,Python,我有点害怕“is not”操作符,当“is(not X)”被指定时,“is not X”可能会被解释。确实存在一些表达式A和B,以便: A is not B 不同于 A is (not B) ? 附录。 使用此运算符是否被视为良好做法?难道不应该(A是B)被优先考虑吗?它们绝对不同。后一种情况首先在布尔上下文中计算而不是X,然后检查这两个对象是否是同一个对象(要么True要么False) 考虑: False is not [] 由于False和[]是非常明显不同的对象,因此此表达式非常简单
A is not B
不同于
A is (not B)
?
附录。
使用此运算符是否被视为良好做法?难道不应该(A是B)被优先考虑吗?它们绝对不同。后一种情况首先在布尔上下文中计算
而不是X
,然后检查这两个对象是否是同一个对象(要么True
要么False
)
考虑:
False is not []
由于False
和[]
是非常明显不同的对象,因此此表达式非常简单。一,
vs
此表达式为False
,因为not[]
求值为True
和False
和True
是不同的对象
当然,这只是一个例子。如果不显式地使用False
和True
,查找示例会更容易,因为第二个表达式总是False
,而第一个表达式(几乎)总是True
3 is not 0 # True
3 is (not 0) # False
1请注意,这是一个单一运算符与
相同,而不是在中,它们绝对不同。后一种情况首先在布尔上下文中计算而不是X
,然后检查这两个对象是否是同一个对象(要么True
要么False
)
考虑:
False is not []
由于False
和[]
是非常明显不同的对象,因此此表达式非常简单。一,
vs
此表达式为False
,因为not[]
求值为True
和False
和True
是不同的对象
当然,这只是一个例子。如果不显式地使用False
和True
,查找示例会更容易,因为第二个表达式总是False
,而第一个表达式(几乎)总是True
3 is not 0 # True
3 is (not 0) # False
1请注意,是一个单一操作员,与不在
中的操作员处于同一脉络中是:
A = 0
B = 1
试试看,你会非常害怕:
>>> A = 0
>>> B = 1
>>> A is not B
True
>>> A is (not B)
False
是的:
试试看,你会非常害怕:
>>> A = 0
>>> B = 1
>>> A is not B
True
>>> A is (not B)
False
在某些情况下,not B
的可能重复将是一个错误,如果B
不能用作隐式布尔值。在某些情况下,not B
的可能重复将是一个错误,如果B
不能用作隐式布尔值。我在Python 2.7和Python 3.3中的结果相同。使用False is not[]
查看差异。@Matthias--谢谢。我想是清晨的脑雾吧。我总是很惊讶,即使回答错误,你也能获得如此多的选票:-)我在Python2.7和Python3.3中得到了相同的结果。使用False is not[]
查看差异。@Matthias--谢谢。我想是清晨的脑雾吧。即使回答错误,你也能获得如此多的选票,我总是感到惊讶:-)