这个问题困扰着我,我知道关系运算符的优先级高于赋值运算符,如下所示:
>>> f = 5 > 0
>>> f
True
>>> f + 1
2
>>> True > 2
False
它将返回true和false布尔值,并且还可以添加和减去布尔值。 但是当多个运营商连接在一起时,我感到非常尴尬。我不知道它是从左到右还是从右到左。
例如,我知道先计算“ 5> 2”,先获取布尔值(True),然后计算“ True> 2”,最后得到False(因此似乎从左到右考虑)
>>> 5 > 2 > 3
False
但是,当我使用其他值尝试时,这似乎是错误的。 如果我继续认为先计算“ 4> 1”,然后再计算“ 3> True”,那么结果似乎是True(或者这次是从左到右?)
>>> 3 > 4 > 1
False
然后,我定义了一个函数来探索它们的操作顺序,并在其中用括号将其更改。
print('a>b>c', 'a>(b>c)', '(a>b)>c', end='\t')
print()
def gt(a, b, c):
f = a > b > c
print(f, end='\t')
f = a > (b > c)
print(f, end='\t')
f = (a > b) > c
print(f)
gt(1.5, 2, 0)
gt(1.5, 0, 2)
gt(0, 1.5, 2)
gt(0, 2, 1.5)
gt(2, 1.5, 0)
gt(2, 0, 1.5)
结果:
a>b>c a>(b>c) (a>b)>c
False True False
False True False
False False False
False False False
True True True
False True False
但是此函数的结果使我更加困惑。我不知道它是从左到右还是从右到左,所以我希望得到您的答复,谢谢。