我应该如何在python注解中格式化一个长URL,并且仍然符合PEP8

2guxujil  于 2023-03-28  发布在  Python
关注(0)|答案(8)|浏览(131)

在块注解中,我想引用一个长度超过80个字符的URL。
显示此URL的首选约定是什么?
我知道bit.ly是一个选项,但URL本身是描述性的。缩短它,然后有一个嵌套的评论描述缩短的URL似乎是一个蹩脚的解决方案。

pnwntuvh

pnwntuvh1#

不要破坏URL:

# 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
z2acfund

z2acfund2#

关于PEP 8
但最重要的是:知道什么时候应该不一致--有时候风格指南并不适用。当有疑问的时候,用你最好的判断。看看其他的例子,决定什么看起来最好。不要犹豫问!
有两个很好的理由来打破一个特定的规则:

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

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

gcuhipw9

gcuhipw93#

您可以在行尾使用# noqa来阻止PEP 8/Flake 8运行该检查。PEP 8允许通过以下方式执行此操作:
特殊情况还不至于特殊到违反规定。

lymnna71

lymnna714#

我会说别管它...
PEP20
特殊情况还不至于特殊到违反规定。
尽管实用胜过纯洁。
更实用的是能够快速复制/粘贴url,然后在粘贴到浏览器时删除换行符。

9w11ddsr

9w11ddsr5#

如果您使用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
hlswsv35

hlswsv356#

将'# noqa'添加到整个文档字符串可以工作,但这意味着您将失去对整个文档字符串的内省,因此您可能会错过其他问题。
如果你想把noqa缩小到只包含一个长的行,你可以只把它添加到长的行中,但是当用sphinx构建时,'# noqa'会出现在文档中。
在这种情况下,您可以构建一个自定义autodoc处理方法。参见this answer
这是我的改编版本

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
6jjcrrmo

6jjcrrmo7#

你使用像谷歌这样的网址缩短器,所以从这个:
http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
您将获得:
http://goo.gl/93ZLQ

zpqajqem

zpqajqem8#

我的选择是:

URL = ('http://stackoverflow.com/questions/10739843/'
       'how-should-i-format-a-long-url-in-a-python-'
       'comment-and-still-be-pep8-compliant')

相关问题