在块注释中,我想引用一个长度超过 80 个字符的 URL。
显示此 URL 的首选约定是什么?
我知道 bit.ly 是一个选项,但 URL 本身是描述性的。缩短它然后有一个描述缩短 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
来自PEP8
但最重要的是:知道何时不一致——有时风格指南并不适用。如有疑问,请使用您的最佳判断。查看其他示例并决定什么看起来最好。不要犹豫,问!
打破特定规则的两个充分理由:
- 应用规则会使代码的可读性降低,即使对于习惯于阅读遵循规则的代码的人也是如此。
就个人而言,我会使用该建议,而不是在您的评论中为人们留下完整的描述性 URL。
您可以# noqa
在行尾使用 来阻止 PEP8/Flake8 运行该检查。PEP8 通过以下方式允许这样做:
特殊情况不足以打破规则。
如果您使用的是 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
添加 '#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
你使用像谷歌这样的网址缩短器:
http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
你得到:
我的选择是:
URL = ('http://stackoverflow.com/questions/10739843/'
'how-should-i-format-a-long-url-in-a-python-'
'comment-and-still-be-pep8-compliant')