为什么如果x,y:引发一个SyntaxError?

iCo*_*dez 14 python syntax if-statement

我想知道以下代码是否有任何原因引发SyntaxError:

>>> if 1,2:
  File "<stdin>", line 1
    if 1,2:
        ^
SyntaxError: invalid syntax
>>>
Run Code Online (Sandbox Code Playgroud)

1,2应该被Python解释为两项元组(然后True在if语句测试时会进行评估)?以下演示表明它应该:

>>> 1,2
(1, 2)
>>> tup = 1,2
>>> bool(tup)
True
>>>
Run Code Online (Sandbox Code Playgroud)

此外,如果您查看Python的if语句的文档,您将阅读:

if_stmt ::=  "if" expression ":" suite
             ( "elif" expression ":" suite )*
             ["else" ":" suite]

正如您所看到的,它清楚地表明if语句的语法是if关键字后跟表达式.如果我没有弄错的话,1,2 确实是一种表达方式.

最后,可以说这种语法没用,为什么要允许呢?这是事实,但PythonZen明确地说:

特殊情况不足以打破规则.

那么为什么SyntaxError呢?

小智 -3

你所做的并不是你所想的。

1==1,2:你声明了两件事。1==1=真且2。

1==(1,2)=False:它们甚至是两种不同的类型。

if 1==1,2: undoable: not a statements 如果你想想我向你展示的内容,那么 (,) 逗号不仅是多余的,而且是错误的。