python对额外括号敏感?

Sri*_*esh 4 python syntax-error python-2.6 parentheses

这个片段工作得很好

if True: print "just True"
if (True): print "(True)"
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

当我尝试

for (i in range(1, 3)):
    print i
Run Code Online (Sandbox Code Playgroud)

我收到错误"SyntaxError:invalid syntax"

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

Jea*_*bre 5

语法for是(简化)

for <variable(s)> in <expression>
Run Code Online (Sandbox Code Playgroud)

更确切地说:

for_stmt ::=  "for" target_list "in" expression_list ":" suite
              ["else" ":" suite]
Run Code Online (Sandbox Code Playgroud)

因为你是括号<variable> in <expression>,语法变得无效.

for并且in必须存在于相同的嵌套级别.

语法while简单:

while_stmt ::=  "while" expression ":" suite
                ["else" ":" suite]
Run Code Online (Sandbox Code Playgroud)

因此允许使用括号,尽管在Python中不是必需的