[]中的Python表达式求值似乎已损坏

时间:2019-09-20 17:05:35

标签: python

在工作中使用一些内部开发的工具时,我发现了一些我无法解释的行为。我用一个人为的例子重现了这个问题:

>>> _list = [3, 4]
>>> test0 = "string"
>>> test1 = 7
>>> _list[test0 == "string" & test1 == 7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'str' and 'int'
>>> _list[(test0 == "string") & (test1 == 7)]
4

解释器似乎首先解释&,而不是首先==。

Python Documentation指出评估顺序应为==,然后&

这是Python解释器中的错误吗?我正在使用3.6.3

1 个答案:

答案 0 :(得分:3)

根据§6.16. Operator precedence==的优先级低于&。令人困惑的是,该表从最低到最高优先级列出了运算符。 (我不得不盯着它看一分钟,以确保我没看错。)

这意味着表达式被解析为:

_list[test0 == ("string" & test1) == 7]
相关问题