为什么python允许省略布尔运算符前面的空格而不是后面的空格?

问题描述

这有效: 1and 1 并计算为 1

1 and1 会引发 SyntaxError。

为什么前面的空格是可选的,后面的空格不是?

解决方法

每个lexical analysis

只有在两个标记之间的连接可以被解释为不同的标记时,才需要在两个标记之间使用空格...

and1 是一个有效的 identifier,所以 and1 可以被解释为单个标记,而 1and 不是,所以它不可能。

>

大概至少部分是因为这个,PEP-8 recommends 总是用空格包围它们:

始终用一个空格将这些二元运算符括起来:赋值(=)、增强赋值(+=-= 等)、比较(==,<,>,!=,<>,<=,>=,in,not in,{ {1}}、is)、布尔值(is notandor)。