运行以下行时:
>>> [0xfor x in (1, 2, 3)]
Run Code Online (Sandbox Code Playgroud)
我希望 Python 返回一个错误。
相反,REPL 返回:
[15]
可能是什么原因?
今天在我们的代码库中注意到一行,我认为肯定会因为语法错误而无法构建,但是测试正在通过,所以显然它实际上是有效的python(在2.x和3中).
条件表达式有时不需要空格:
>>> 1if True else 0
1
Run Code Online (Sandbox Code Playgroud)
如果LHS是变量,它不起作用:
>>> x = 1
>>> xif True else 0
File "<stdin>", line 1
xif True else 0
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
但它似乎仍然适用于其他类型的文字:
>>> {'hello'}if False else 'potato'
'potato'
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,它是出于某种原因故意成为语法的一部分吗?这个奇怪的怪癖是一种已知/记录的行为吗?