因为解释器会在你按下回车键时尝试执行代码,但需要空行来确定函数、循环、条件语句或其他缩进块的结束位置。如果编写函数,则不需要(事实上也不起作用)在函数的最后一行之前添加空行。在这种情况下,空行是必需的,以表示函数的结尾。你可以在shell中执行没有空行的脚本。
for i in range(3):
print i
a = 1000
print a
会产生
$ python test.py
0
1
2
1000
但是如果你把这个粘贴到解释器中,你会得到:
>>> for i in range(3):
... print i
... a = 1000
File "<stdin>", line 3
a = 1000
^
SyntaxError: invalid syntax
>>> print a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
如果您添加一个空行来表示循环的结束
for i in range(3):
print i
a = 1000
print a
将其复制到解释器中。
>>> for i in range(3):
... print i
...
0
1
2
>>> a = 1000
>>> print a
1000
那个空行必须保持为空白,即使是空格(可能是由您的编辑器自动添加的),也会导致解释器失败。
如果您想将类粘贴到解释器中,则不应在任何行之间包含空格,包括方法之间。这与PEP8存在冲突,这意味着您可以遵守PEP8规则,或者与解释器兼容,但不能两者兼备。
因此,如果您想能够将代码复制并粘贴到标准Python解释器中,您需要稍微调整一下规则。
- 用两个空行包围顶层函数和类定义。
- 顶级模块代码(函数或类之外的代码)需要一个空行来结束缩进块,例如for循环、try/except或if语句。
- 在函数、类或方法内部不得使用空行(除\或#之外)。
遵循这些规则,您将保留将代码粘贴到解释器中的能力。但对于类而言,您将不严格遵守PEP8规则,因为在方法之前和之后需要一个空行。