wim*_*wim 52 python grammar conditional-expressions
今天在我们的代码库中注意到一行,我认为肯定会因为语法错误而无法构建,但是测试正在通过,所以显然它实际上是有效的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)
这里发生了什么,它是出于某种原因故意成为语法的一部分吗?这个奇怪的怪癖是一种已知/记录的行为吗?
pok*_*oke 63
令牌之间有空格
除了在逻辑行的开头或字符串文字中,空白字符空格,制表符和换页符可以互换使用以分隔标记.仅当两个令牌的串联可以被解释为不同的令牌(例如,ab是一个令牌,但ab是两个令牌)时,才需要两个令牌之间的空格.
因此,在这种情况下,1if不是有效的标记,因此空格是可选的.它1被解释为整数文字,其中if不是一部分.因此if被单独解释并被识别为关键字.
在xif但是,标识符是公认的,所以Python是不是能看到你想做的事x if那里.
| 归档时间: |
|
| 查看次数: |
2261 次 |
| 最近记录: |