标签: pep8

用于根据PEP257自动检查文档字符串样式的工具

pep8这样的工具可以查看源代码样式,但是它们不会根据pep257,pep287来检查docstrings是否已经过滤.有这样的工具吗?

更新

我决定自己实现这样一个静态分析工具,请参阅:

https://github.com/GreenSteam/pep257

现在,大多数pep257都被覆盖了.设计受到提到的pep8工具的严重影响.

python static-analysis docstring pep8 pep

20
推荐指数
1
解决办法
2727
查看次数

完整的代码示例演示了所有PEP-8规则

我希望我的代码符合PEP-8标准.
但是,每次忘记任何规则时阅读PEP8页面都非常耗时.如果我有一个代码示例,它会更快地演示所有 PEP-8规则.

是否有任何代码示例正是这样做的?

python pep8

20
推荐指数
3
解决办法
1万
查看次数

如何在第一个文档字符串中断链接以满足pep8?

我正在使用Sphinxdoc生成api文档,并且在编写docstring时遇到了pep8一致性问题.

如下所示,OWASP站点的链接在第105列结束,远远超过pep8规定的最大行长度

def handle_csrf(...):
    """The general recommendation by people in the know [OWASP]_, is
       'to implement the Synchronizer Token Pattern (STP_)'.

       .. [OWASP] The Open Web Application Security Project
          (https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet)
       .. _STP: http://www.corej2eepatterns.com/Design/PresoDesign.htm

    """
Run Code Online (Sandbox Code Playgroud)

有没有办法包装网址,同时仍然保持生成的文档中的URL?

插入反斜杠不起作用.

python restructuredtext pep8 python-sphinx

20
推荐指数
2
解决办法
3540
查看次数

Python:PEP 8类名作为变量

根据PEP 8,编写用于标识类名(而非实例)的变量的约定是什么?

也就是说,给出了两个班,A并且B,它下面的语句是正确的?

target_class = A if some_condition else B
instance = target_class()
Run Code Online (Sandbox Code Playgroud)

要么

TargetClass = A if some_condition else B
instance = TargetClass()
Run Code Online (Sandbox Code Playgroud)


如样式指南中所述,

班级名称:

类名通常应使用CapWords约定.

但是也

方法名称和实例变量:

使用函数命名规则:小写,必要时用下划线分隔,以提高可读性.

在我看来,这两个公约发生了冲突,我无法找到哪一个盛行.

python pep8

20
推荐指数
2
解决办法
2309
查看次数

为什么我们有lower_case_with_underscores命名约定?

根据你的解释,这可能是也可能不是一个修辞问题,但它真的让我感到困惑.这个惯例有什么意义?我理解命名约定不一定要有背后的押韵或理由,但为什么偏离已经流行的camelCase?我不知道什么押韵和背后的原因lower_case_with_underscores吗?(是的,我完整地阅读了PEP 8,是的,我确实理解它只是一个提案,指南等)

我想我的真正问题是:我正在编写一个Python库.事实上,运气好的话,相对于我的其他项目,它可能是一个相当大的库.我已经尝试尽可能地遵守PEP 8,到目前为止,我甚至保持lower_case_with_underscoresPEP 8指示功能和方法名称.但是我不得不记得使用camelCase for Twisted,camelCase logging以及其他所有东西.我应该使用什么命名约定,为什么?

令人惊讶的是,我非常关心命名,足以写出一个冗长的问题,而且我也很惊讶.也许在这些事情上我有一点强迫症.我没有太多关于它的"个人意见",因为我倾向于选择最常用的东西,在这种情况下,将是camelCase - 但它让我更加恼火的是找到那个我可能正在打破一些关于明确与隐含的永恒定律以及用石头或其他东西写成的蟒蛇的禅.

python camelcasing pep8 naming-conventions

19
推荐指数
5
解决办法
5546
查看次数

PEP8对测试类的命名约定

我一直在研究PEP 8 - Python代码样式指南PEP8 - 高级用法,以获取有关如何命名我的测试类的线索.但是,这两个站点以及我看过的许多其他站点都没有提及过,例如Python文档中的unittest页面.我看到的唯一一致的风格是"CapWords".在unittest文档中,他们有TestSequenceFunctions和DefaultWidgetSizeTestCase的示例.

我想知道的是使用"名称"测试还是测试"名称".方法使用test_"name",这几乎已经建立.关于课程,如果有的话,我很难找到一个约定.

非常感谢论坛对此的帮助.

python testing class pep8

19
推荐指数
2
解决办法
1万
查看次数

如何打破PEP8合规性的长串线?

我在项目中有很多这样的长线,并且不知道如何打破它以保持PEP8的快乐.PEP8显示警告.format(me['id'])

pic_url = "http://graph.facebook.com/{0}/picture?width=100&height=100".format(me['id'])
Run Code Online (Sandbox Code Playgroud)

我怎样才能打破这条线来摆脱PEP8警告而又不破坏代码呢?

python string pep8

19
推荐指数
1
解决办法
1万
查看次数

Python:Pep8 E128压痕错误......这怎么样?

我将此声明作为几行:

    return render_to_response('foo/page.html',
        {
            'situations': situations,
            'active': active_req,
        },
        context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

按照现在的情况,使用PEP8脚本,它在第二行给出了一个"E128:延迟线下缩进视觉缩进"错误.

我尝试了一大堆不同的格式化方法,而且我能让PEP8停止抱怨的唯一方法是:

    return render_to_response('foo/page.html', {
        'situations': situations,
        'active': active_req,
    },
        context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

但这看起来像垃圾.

建议?E124,E126和E128似乎是一个巨大的痛苦!

我不介意具有{第一行(或它自己)的解决方案,但我希望有一个解决方案,其中},context_instance...处于相同的缩进级别.

python formatting coding-style pep8

18
推荐指数
1
解决办法
1万
查看次数

表示IS NOT NULL而不会导致PEP8错误

在我的项目中的某个点,我需要查询SQLAlchemy对象的NOT NULL列.在我的代码中,我做:

session.query(MyModel).filter(MyModel.my_column != None).all()
Run Code Online (Sandbox Code Playgroud)

......而且效果很好.问题是,无论何时我运行文件pep8或其他任何一个短文,它都会引发错误E711:比较None应该是if cond is not None:.我同意这条准则的精神,因此我不想因为一条小线而使警告无声.

有没有其他方式来写这个?最好是我们不必挖掘func模块的地方?

python sqlalchemy pep8

18
推荐指数
1
解决办法
2672
查看次数

编码风格(PEP8) - 模块级别"dunders"

"Dunder"(定义d ouble 得分):http://www.urbandictionary.com/define.php?term=Dunder


我有根据的模块级"dunders"(如放置的问题__all__,__version__,__author__在Python代码等).

这个问题向我走来,通过阅读而PEP8,看到这个堆栈溢出问题.

接受的答案是:

__author__ 是一个全局"变量",因此应该出现在导入之下.

但是在PEP8部分模块级别的dunder名称中我读了以下内容:

模块级"dunders"(即名称具有两个前缘和两个纵下划线),例如__all__,__author__,__version__等应被放置在模块文档字符串之后,但在除了从任何导入语句__future__进口.Python要求future-imports必须在除docstrings之外的任何其他代码之前出现在模块中.

作者还给出了一个代码示例:

"""This is the example module.

This module does stuff.
"""

from __future__ import barry_as_FLUFL

__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'

import os
import sys
Run Code Online (Sandbox Code Playgroud)

但是当我将上述内容放入PyCharm时,我看到了这个警告(也见截图):

PEP8:模块级别导入不在文件顶部

PyCharm无视PEP8?

问题:使用双下划线存储这些变量的正确方法/位置是什么?

python pep8 pep pycharm

18
推荐指数
1
解决办法
2744
查看次数