此示例中三元运算符的优先级是什么?

los*_*g12 3 python conditional-operator operator-precedence

>>> count = 0
>>> for c in "##.#.":
...     count = count + 1 if c == '.' else 0
... 
>>> print(count)
1
>>> count = 0
>>> for c in "##.#.":
...     count = count + (1 if c == '.' else 0)
... 
>>> print(count)
2
Run Code Online (Sandbox Code Playgroud)

为什么第一个示例不打印出计数器 2?

Inf*_*ity 5

条件表达式的优先级非常低

所以第一个表达式实际上被解析为:

count = (count + 1) if c == '.' else 0
Run Code Online (Sandbox Code Playgroud)

count每次都会设置为 0 c != '.'