我对python中的身份有疑问,我是python的初学者,我读过一些有关“ is”关键字和“ is not”的课程。而且我不明白为什么操作“ False is not True不是True不是True不是False is True”在python中等于False吗?对我来说,此操作必须返回True。
答案 0 :(得分:3)
Python chains comparisons:
通常,如果
a, b, c, …, y, z
是表达式,而op1, op2, …, opN
是比较运算符,则a op1 b op2 c ... y opN z
等效于a op1 b and b op2 c and ... y opN z
,除了每个表达式最多可计算一次。
您的表情是:
False is not True is not True is not False is not True
哪个会成为:
(False is not True) and (True is not True) and (True is not False) and (False is not True)
等同于:
(True) and (False) and (True) and (True)
哪个是False
。
答案 1 :(得分:2)
is
与身份有关。
当您问if x is y
时,您实际上是在问 x
和y
是同一个对象吗? (请注意,这与 x
和y
的值相同吗?是一个不同的问题。)
同样,当您问if x is not y
时,您实际上是在问 x
和y
是不同的对象吗?
专门针对True
和False
,Python将它们视为 singletons ,这意味着在整个程序中只有一个False
对象。每当您为False
分配Somnething时,即是对单个False
对象的引用,因此所有False
对象都具有相同的 identity 。
答案 2 :(得分:-1)
您正在处理逻辑。考虑True = 1和False = 0很有帮助。
以这种方式思考。 0不是1,则将返回True,因为数字0不是数字1,而是一个真实的陈述。真假相同的概念
0 is not 1
#this will return False
False is not True
#the computer reads this in the exact same manner.