为什么python允许省略布尔运算符前面的空格而不是后面的空格?
这有效:
1and 1并评估为1.
这1 and1会引发 SyntaxError。
为什么前面的空格是可选的,后面的空格不是?
回答
每词法分析:
仅当它们的串联可以被解释为不同的标记时,两个标记之间才需要空格...
and1是一个有效的标识符,因此and1可以解释为单个标记,而1and不是,因此不能解释。
大概至少部分是因为这个,PEP-8建议总是用空格包围它们:
总是围绕这些二元运算符在任一侧的单个空间:分配(
=),增量赋值(+=,-=等),比较(==,<,>,!=,<>,<=,>=,in,not in,is,is not),布尔值(and,or,not)。