98

在块注释中,我想引用一个长度超过 80 个字符的 URL。

显示此 URL 的首选约定是什么?

我知道 bit.ly 是一个选项,但 URL 本身是描述性的。缩短它然后有一个描述缩短 URL 的嵌套注释似乎是一个糟糕的解决方案。

4

8 回答 8

84

不要破坏网址:

# A Foolish Consistency is the Hobgoblin of Little Minds [1]
# [1]: http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
于 2012-05-24T14:56:20.537 回答
75

来自PEP8

但最重要的是:知道何时不一致——有时风格指南并不适用。如有疑问,请使用您的最佳判断。查看其他示例并决定什么看起来最好。不要犹豫,问!

打破特定规则的两个充分理由:

  • 应用规则会使代码的可读性降低,即使对于习惯于阅读遵循规则的代码的人也是如此。

就个人而言,我会使用该建议,而不是在您的评论中为人们留下完整的描述性 URL。

于 2012-05-24T14:55:13.387 回答
53

您可以# noqa在行尾使用 来阻止 PEP8/Flake8 运行该检查。PEP8 通过以下方式允许这样做:

特殊情况不足以打破规则。

于 2014-07-30T10:43:30.777 回答
22

我会说离开它...

PEP20

特殊情况不足以打破规则。

虽然实用胜过纯洁。

能够快速复制/粘贴 url 然后在粘贴到浏览器时删除换行符更实用。

于 2012-05-24T14:55:25.980 回答
20

如果您使用的是 flake8:

"""
long-url: http://stackoverflow.com/questions/10739843/how-should-i-format-a-long-url-in-a-python-comment-and-still-be-pep8-compliant
"""  # noqa
于 2016-09-29T10:41:51.010 回答
0

添加 '#noqa' 有效,但如果它在文档字符串中,则在使用 spinx 构建时,'#noqa' 会显示在文档中。在这种情况下,您可以构建自定义 autodoc 处理方法。看到这个答案

这是我的改编版本,

from sphinx.application import Sphinx
import re

def setup(app):

    noqa_regex = re.compile('^(.*)\s\s#\snoqa.*$')

    def trim_noqa(app, what_, name, obj, options):
        for i, line in enumerate(lines):
            if noqa_regex.match(line):
                new_line = noqa_regex.sub(r'\1', line)
                lines[i] = new_line

    app.connect('autodoc-process-docstring', trim_noqa)
    return app
于 2022-02-24T13:12:16.727 回答
-3

你使用像谷歌这样的网址缩短器:

http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds

你得到:

http://goo.gl/93ZLQ

于 2013-04-08T06:42:13.663 回答
-6

我的选择是:

URL = ('http://stackoverflow.com/questions/10739843/'
       'how-should-i-format-a-long-url-in-a-python-'
       'comment-and-still-be-pep8-compliant')
于 2012-05-24T22:54:08.223 回答