Python 布尔与整数的恒等式比较
我一直在玩,发现了这个 运算符Python 布尔与整数的恒等式比较,python,Python,我一直在玩,发现了这个 运算符是和不是测试对象的标识:当且仅当x和y是同一对象时,x为y为真。使用id()函数确定对象的标识。x不是y,产生反真值 >>列表(映射(id[0,1,True,not False,False,not True])) [94660352164256, 94660352164288, 94660351988128, 94660351988128, 94660351988096, 94660351988096] 现在一切正常:0、1、True和False具有不同的ID,因
是
和不是
测试对象的标识:当且仅当x和y是同一对象时,x为y为真。使用id()
函数确定对象的标识。x不是y,产生反真值
>>列表(映射(id[0,1,True,not False,False,not True]))
[94660352164256, 94660352164288, 94660351988128, 94660351988128, 94660351988096, 94660351988096]
现在一切正常:0
、1
、True
和False
具有不同的ID,因为它们是不同的对象。它们是:
>>True为1
假的
>>>False是0
假的
>>>不假即真
真的
>>>不正确就是错误
真的
但是:
>>> not False is 1
True
>>> not True is 0
True
>>>
我的问题是:怎么可能同时
True不是1
,not False是True
和not False是1
都返回True
?这是因为is
在not
之前
因此:
以及:
它与优先级和操作员优先级有关。你可以这样想:
(True不是1)
,不是(False是真)
,不是(False是1)
现在一切都有了意义。
非x即y
相当于x非y
非x即y
是一种非惯用的拼写方法x非y
。它根本不是(不是x)是y
。不是真的是0
=不是(真的是0)
。查看
not False is 1 => not (False is 1) => not False => True
not True is 0 => not (True is 0) => not False => True