为了账号安全,请及时绑定邮箱和手机立即绑定

布尔值和整数之间的恒等比较

布尔值和整数之间的恒等比较

白板的微信 2023-07-05 16:33:06
我一直在玩,发现了这个。运算符is和is not测试对象的身份:x is y 为真当且仅当 x 和 y 是同一对象时。对象的身份是使用该id()函数确定的。x 不是 y 会产生相反的真值。>>> list(map(id, [0, 1, True, not False, False, not True]))[94660352164256, 94660352164288, 94660351988128, 94660351988128, 94660351988096, 94660351988096]现在一切正常:0、1、True且False具有不同的 id,因为它们是不同的对象。他们是:>>> True is 1False>>> False is 0False>>> not False is TrueTrue>>> not True is FalseTrue但是之后:>>> not False is 1True>>> not True is 0True>>> 我的问题是: 、和全部返回怎么可能?True is not 1not False is Truenot False is 1True
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

那是因为is之前not

https://docs.python.org/3/reference/expressions.html#operator-precedence

所以:

not False is 1 => not (False is 1) => not False => True

和:

not True is 0 => not (True is 0) => not False => True


查看完整回答
反对 回复 2023-07-05
?
慕少森

TA贡献2019条经验 获得超9个赞

它与优先级和运算符优先级有关。可以这样想:

(True is not 1)not (False is True)not (False is 1).

现在一切都应该有意义了。


查看完整回答
反对 回复 2023-07-05
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信