python 对额外的括号敏感?

python sensitive to extra parenthesis?

这段代码运行良好

if True: print "just True"
if (True): print "(True)"

正在研究循环,这些工作正常

for i in range(1, 3):
    print i

i = 0
while i < 3: # without paranthesis
    print i
    i = i + 1

i = 0
while (i < 3): # with paranthesis
    print i
    i = i + 1

当我尝试时

for (i in range(1, 3)):
    print i

我收到一个错误 "SyntaxError: invalid syntax"

我知道外面的括号会使循环变得疯狂(错误)但是我违反了语法的哪一部分?它在 while 循环中运行良好

for 的语法是(简化)

for <variable(s)> in <expression>

more precisely:

for_stmt ::=  "for" target_list "in" expression_list ":" suite
              ["else" ":" suite]

因为你在括号中 <variable> in <expression>,语法变得无效。

forin 必须出现在同一嵌套级别。

while 的语法是 much simpler:

while_stmt ::=  "while" expression ":" suite
                ["else" ":" suite]

因此允许使用括号,尽管在 Python

中不是必需的

您不能随心所欲地添加额外的括号。 while 语法,一般来说,是:

while <condition>:

在这里,您只是用括号括起一个条件,这很好,就像您自己看到的那样。 for 循环的语法是:

for <variable> in <expression>:

您可以将 expression 括在括号中,但语法中没有任意部分。