关于python:什么是PEP8的E128:延续线缩进为视觉缩进?

What is PEP8's E128: continuation line under-indented for visual indent?

刚刚用Sublime Text(Sublime Linter)打开一个文件,发现了一个我以前从未见过的PEP8格式错误。 这是文字:

1
2
3
urlpatterns = patterns('',
    url(r'^$', listing, name='investment-listing'),
)

它标记了第二个参数,即以url(...)开头的行

我准备在ST2中禁用这个检查,但是我想知道在我忽略它之前我做错了什么。 你永远不知道,如果看起来重要我甚至可能改变我的方式:)


如果您在第一行放置任何内容,PEP-8建议您将行缩进到左括号,因此它应该缩进到左括号:

1
2
urlpatterns = patterns('',
                       url(r'^$', listing, name='investment-listing'))

或者不在起始行上放置任何参数,然后缩进到统一级别:

1
2
3
4
5
6
7
urlpatterns = patterns(
    '',
    url(r'^$', listing, name='investment-listing'),
)

urlpatterns = patterns(
    '', url(r'^$', listing, name='investment-listing'))

我建议读一下PEP-8 - 它不是一个很长的文档,而且它很容易理解,不像一些技术性更强的PEP。


这也适用于这样的语句(由PyCharm自动格式化):

1
2
3
    return combine_sample_generators(sample_generators['train']), \
           combine_sample_generators(sample_generators['dev']), \
           combine_sample_generators(sample_generators['test'])

哪个会给出相同的风格警告。 为了摆脱它,我不得不重写它:

1
2
3
4
    return \
        combine_sample_generators(sample_generators['train']), \
        combine_sample_generators(sample_generators['dev']), \
        combine_sample_generators(sample_generators['test'])