相关疑难解决方法(0)

为什么 Python 为 [0xfor x in (1, 2, 3)] 返回 [15]?

运行以下行时:

>>> [0xfor x in (1, 2, 3)]
Run Code Online (Sandbox Code Playgroud)

我希望 Python 返回一个错误。

相反,REPL 返回:

[15]

可能是什么原因?

python operator-precedence short-circuiting python-3.x

64
推荐指数
3
解决办法
8189
查看次数

为什么这不是python中的语法错误?

今天在我们的代码库中注意到一行,我认为肯定会因为语法错误而无法构建,但是测试正在通过,所以显然它实际上是有效的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)

这里发生了什么,它是出于某种原因故意成为语法的一部分吗?这个奇怪的怪癖是一种已知/记录的行为吗?

python grammar conditional-expressions

52
推荐指数
1
解决办法
2261
查看次数