我真的不明白为什么需要:=为命名表达式引入专用语法(运算符),如PEP572 中所述。例如,应该写:
if (match := pattern.search(data)) is not None:
# Do something with match
Run Code Online (Sandbox Code Playgroud)
为什么不简单if (match = pattern.search(data))?如果是因为向后兼容,那么请注意以下表达式:(x = 1)raises SyntaxError: invalid syntax,因此允许它并开始将其解释为命名表达式就足够了,而不是引入 new:=运算符,顺便说一句,在大多数情况下可能是反正被括号包围。
我觉得我没有看到其他人都得到的明显的东西;-)