python空行规则_交互式promp中的空行规则

...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。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值