代码片段1:
a = True, True, True
b = (True, True, True)
print(a == b)
返回 True
。
代码片段2:
(True, True, True) == True, True, True
返回 (False, True, True)
。
代码片段1:
a = True, True, True
b = (True, True, True)
print(a == b)
返回 True
。
代码片段2:
(True, True, True) == True, True, True
返回 (False, True, True)
。
运算符优先级。在你的第二个代码片段中,实际上是在检查(True, True, True)
和True
之间的相等性,然后使用该结果作为第一项构建了一个元组。
请记住,在Python中,通过指定逗号分隔的“列表”项而不使用任何括号,可以返回一个元组:
>>> a = True, True, True
>>> print(type(a))
<class 'tuple'>
>>> print(a)
(True, True, True)
代码片段2也不例外。您正在尝试使用相同的语法构建元组,只是第一个元素是(True,True,True) == True
,第二个元素是True
,第三个元素是True
。
因此,代码片段2等效于:
(((True, True, True) == True), True, True)
由于(True,True,True) == True
是False(您在此处比较了一个包含三个对象的元组和布尔值),因此第一个元素变为False。
(False, True, True)
吗? - Nandu Rajall((True, True, True))
) - TerryATrue
(因为这是指定的),第三个元素也是True
(和第二个元素的原因相同)。 - TerryA(True, True, (True == True), True, True)
。 - TerryAa = True, True, True; b = True, True, True
。现在a == b
将返回True
。 - iamvegana
和 b
都是元组。a = True, True, True
b = (True, True, True)
print(type(a))
print(type(b))
print(a == b)
输出:
<class 'tuple'>
<class 'tuple'>
True
因此,它们被视为元组进行比较,实际上它们的值是相等的。
但对于情况2,它从左到右进行评估。
(True, True, True) == True, True, True
(True, True, True)
与仅有的True
进行比较,结果为False
。True
? - Nandu Raj