在尝试为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
循环(例如)编写为一个用于命令行使用的内容。