Why isn't this a syntax error in python?
注意到我们今天的代码库中有一行代码,我认为它肯定会由于语法错误而导致构建失败,但是测试通过了,所以很明显它实际上是有效的Python(在2.x和3中)。
条件表达式中有时不需要空格:
1 2 | >>> 1if True else 0 1 |
如果lhs是一个变量,则不起作用:
1 2 3 4 5 6 | >>> x = 1 >>> xif True else 0 File"<stdin>", line 1 xif True else 0 ^ SyntaxError: invalid syntax |
号
但它似乎仍然适用于其他类型的文字:
1 2 | >>> {'hello'}if False else 'potato' 'potato' |
这是怎么回事,它是不是出于某种原因故意成为语法的一部分?这种奇怪的怪癖是已知的/有记录的行为吗?
Whitespace between tokens
Except at the beginning of a logical line or in string literals, the whitespace characters space, tab and formfeed can be used interchangeably to separate tokens. Whitespace is needed between two tokens only if their concatenation could otherwise be interpreted as a different token (e.g., ab is one token, but a b is two tokens).
所以在这个案例,
在
《Python for the rule双令牌
我公司是一个知识处理和词汇标记我说什么你看到的是任何一个可以parsed词汇为"不同"(IU数/词典等)从