在块注释中,我想引用一个超过80个字符的URL。
有什么首选约定来显示这个URL吗?
我知道 bit.ly 是一个选择,但 URL 本身是描述性的。缩短它,然后再有一个嵌套注释来描述缩短后的URL似乎不是一个好的解决方案。
不要破坏网址:
忽略某个指南的其他好理由:
- 遵循该指南会导致代码变得更难阅读,即使对于习惯于阅读符合此PEP的代码的人来说也是如此...
来源:
# 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
您可以在代码行末尾使用# noqa来停止PEP8/pycodestyle/Flake8运行该检查。这也可以避免IDE中的警告。
# [1]: http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds # noqa
来自PEP8
但最重要的是:知道何时不一致——有时样式指南并不适用。如果有疑问,使用您最好的判断力。查看其他示例,然后决定哪个看起来最好。不要犹豫去询问!
打破某个特定规则的两个好理由:
- 当应用规则会使代码变得更加难读,即使是习惯于遵循规则的人也是如此。
就我个人而言,我会采纳这个建议,并将完整的描述性URL留在评论中供人们使用。
# noqa
来停止PEP8 / Flake8运行该检查。这是由PEP8通过以下方式允许的:
特殊情况并不足以打破规则。
#noqa
是我发现的唯一一种禁用长注释行警告的方法。还有其他几个讨厌的警告,其中#noinspection
无法解决。非常有帮助。 - Bob Stein# very_long_url.com noqa
还是 # very_long_url.com # noqa
?无论哪种方式,Pylint似乎都会忽略它们,并且显然需要# pylint: disable=line-too-long # noqa: E501
。 - Eric Duminil如果您正在使用flake8:
"""
long-url: https://dev59.com/LGgv5IYBdhLWcg3wQ-gU
""" # noqa
在整个文档字符串中添加“#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
你可以使用像谷歌这样的URL缩短器,从这个链接:
http://www.python.org/dev/peps/pep-0008/#a-foolish-consistency-is-the-hobgoblin-of-little-minds
你得到:
我的选择会是:
URL = ('https://dev59.com/LGgv5IYBdhLWcg3wQ-gU'
'how-should-i-format-a-long-url-in-a-python-'
'comment-and-still-be-pep8-compliant')