注意到今天在我们的代码库中有一行代码,我认为肯定会因语法错误而使构建失败,但是测试通过了,显然它实际上是有效的python(在2.x和3中)。
条件表达式有时不需要空格:
>>> 1if True else 0 1
如果LHS是变量,则不起作用:
>>> x = 1 >>> xif True else 0 File "<stdin>", line 1 xif True else 0 ^ SyntaxError: invalid syntax
但是它似乎仍然可以与其他类型的文字一起使用:
>>> {'hello'}if False else 'potato' 'potato'
这是怎么回事,出于某种原因,它是否有意成为语法的一部分?这个奇怪的怪癖是已知/记录的行为吗?
令牌之间的空白 除逻辑行的开头或字符串文字外,空格字符空格,制表符和换页符可互换使用以分隔标记。仅当两个令牌的级联可以另外解释为其他令牌(例如,ab是一个令牌,而ab是两个令牌)时,才需要在两个令牌之间使用空格。
令牌之间的空白
除逻辑行的开头或字符串文字外,空格字符空格,制表符和换页符可互换使用以分隔标记。仅当两个令牌的级联可以另外解释为其他令牌(例如,ab是一个令牌,而ab是两个令牌)时,才需要在两个令牌之间使用空格。
因此,在这种情况下,1if它不是有效的令牌,因此空白是可选的。将1解释为if不属于的整数文字。因此if被单独解释并识别为关键字。
1if
1
if
在xif但是,标识符是公认的,所以Python是不是能看到你想做的事x if那里。
xif
x if