【问题标题】:Pep8 Python3.3 ContradictionPep8 Python.3 矛盾
【发布时间】:2012-11-07 03:45:28
【问题描述】:

Pep 8 有以下规则

空白行

用两个空格分隔顶级函数和类定义 行。

类中的方法定义由一个空格分隔 行。

可以(谨慎地)使用额外的空行来分隔 相关功能。一堆之间可以省略空行 相关的单行代码(例如一组虚拟实现)。

在函数中谨慎地使用空行来表示逻辑部分。

Python 接受 control-L(即 ^L)换页符作为 空白;许多工具将这些字符视为页面分隔符,因此 您可以使用它们来分隔文件相关部分的页面。 请注意,某些编辑器和基于 Web 的代码查看器可能无法识别 control-L 作为换页符,并将在其位置显示另一个字形。

但是,类定义中不能有一个完全空行

我的例子:

class bunny:
    def spam(self):
        pass

    def eggs(self):
        pass

#a second example
class bunny2:
    def __init__(self):
        self._eggs = None

    def eggs(self):
        doc = "Spam and Eggs"

        def fget(self, value):
            return self._eggs

        def fset(self, value):
            self._eggs = value

        def fdel(self):
            del self._eggs

        return locals()
    eggs = property(**eggs())

垃圾邮件和鸡蛋之间的行必须是空行,但是,这将导致意外缩进的解析错误。是否有另一个角色应该进入那个空间?我的假设只是将空格/制表符留在“空白”行,因为它更具可读性。

在第二个示例中,嵌套的 defs 需要维护它们之前的行缩进,以使解析正常工作。 处理此问题的正确 PEP 8 方法是什么?空行,有空格的空行,没有行?

【问题讨论】:

  • 您的代码显然有问题。也许是混合制表符和空格?
  • 没有不混合的空格和制表符,都是制表符。我的问题是基于那些空白行必须与它们所在的块保持缩进,使它们不是“空白”(空格仍然是一个字符)我的代码运行良好,这些只是问题的例子。定义之间的那些空行是否应该包含空格,或者应该将它们省略。块中间不能有完全空白的行,它们必须至少具有它们所在块的缩进级别。
  • 你在处理 REPL 吗?语言本身没有你所说的限制。

标签: coding-style python-3.x whitespace pep8


【解决方案1】:

如果您在 REPL 中工作,则不能有完全空白的行。但是无论如何,在 REPL 中输入的代码没有理由严格遵守 PEP 8。但在文件中,遵循 PEP 8 是个好主意。

【讨论】:

  • 好吧,完美,这就是我想要弄清楚的,我正在使用 repl,所以你不能有空行。这是完全有道理的。谢谢!
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 2017-11-06
  • 2016-02-21
  • 1970-01-01
  • 2011-02-03
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多