为什么`x = 5;对于范围(x)中的i:print(i)`导致SyntaxError?

时间:2016-11-28 04:08:49

标签: python

在尝试为another question的单行Python代码提供示例时,我偶然发现了一个我没想到的SyntaxError

>>> x = 5; for i in range(x): print(i)
  File "<stdin>", line 1
    x = 5; for i in range(x): print(i)
             ^
SyntaxError: invalid syntax

我发现^的位置很有趣,因为它表示SyntaxError发生在 for后发生而不是之前。

当然,以下工作:

>>> x = 5; print(x)
5
>>> for i in range(x): print(i)
... 
0
1
2
3
4

甚至

>>> for i in range(5): x = i * 2; print(x)
... 
0
2
4
6
8

似乎SyntaxError仅在;发生之前发生 for而不发生之后发生。有人可以解释语法的哪一部分必须如此,或者为什么Python将其解析为无效?

请注意:我很清楚这种基于分号的方法不是首选方法,使用换行符是编写Python的正确方法。我要求更多的是对Python解析器的好奇心,以及如何将for循环(例如)编写为一个用于命令行使用的内容。

0 个答案:

没有答案