...why is there a different rule for blank lines in Python between interactive prompt and when the program is run from shell
因为解释器在返回Read时试图执行,但它需要空白行来了解函数、循环、语句或其他缩进块是否已完成。如果编写一个函数,在函数的最后一行之前添加空行是不需要的(事实上是行不通的)。在这种情况下,需要空白行来指示函数的末尾。在
例如,您可以执行一个没有来自shell的空行的脚本for i in range(3):
print i
a = 1000
print a
会产生
^{pr2}$
但是如果你把这个贴在翻译里,你会得到>>> for i in range(3):
... print i
... a = 1000
File "", line 3
a = 1000
^
SyntaxError: invalid syntax
>>> print a
Traceback (most recent call last):
File "", line 1, in
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,因为在方法之前和之后有一个空行required。在