【发布时间】:2020-08-31 21:08:15
【问题描述】:
我一直在玩,发现了这个。
运算符
is和is not测试对象的身份:当且仅当 x 和 y 是同一个对象时,x 为 y 为真。使用id()函数确定对象的身份。 x is not 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 1
False
>>> False is 0
False
>>> not False is True
True
>>> not True is False
True
然后:
>>> not False is 1
True
>>> not True is 0
True
>>>
我的问题是:怎么可能同时True is not 1、not False is True和not False is 1都返回True?
【问题讨论】:
-
not x is y等价于x is not y。 -
not x is y是拼写x is not y的一种非惯用方式。根本不是(not x) is y。 -
not True is 0==not (True is 0)。查看Operator precedence
标签: python