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?
条件表达式的优先级非常低。
所以第一个表达式实际上被解析为:
count = (count + 1) if c == '.' else 0
Run Code Online (Sandbox Code Playgroud)
count每次都会设置为 0 c != '.'。