Python中的运算符顺序:f = a> b> c

时间:2019-11-18 12:19:14

标签: python operators

这个问题困扰着我,我知道关系运算符的优先级高于赋值运算符,如下所示:

>>> 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

但是此函数的结果使我更加困惑。我不知道它是从左到右还是从右到左,所以我希望得到您的答复,谢谢。

0 个答案:

没有答案