PEP8のE128とは何ですか:視覚的なインデントのために字下げされた継続行?


298

Sublime Text(Sublime Linterを使用)でファイルを開くと、今まで見たことのないPEP8フォーマットエラーに気づきました。ここにテキストがあります:

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

2番目の引数、開始する行にフラグを立てます url(...)

ST2でこのチェックを無効にしようとしていましたが、無視する前に何が問題なのかを知りたいのですが。あなたが知らない、それが重要であると思われる場合、私は私の方法を変えるかもしれません:)

回答:


475

PEP-8は、最初の行に何かを置く場合は、開始括弧に行をインデントすることをお勧めします。そのため、開始ブラケットにインデントする必要があります。

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

または、開始行に引数を入れずに、一定のレベルまでインデントします。

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

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

PEP-8を一読することをお勧めします。多くのPEP-8とは異なり、簡単に読むことができます。理解しやすいでしょう。


5
Djangoがこれを行う理由は誰でも知っています。正当な理由はありますか?PeP-8をフォローするのも同じくらい簡単だと思われます。
TheHerk、2014年

6
これは、私が見たDjangoコードのどこにでもある(さらに、ドキュメント全体に及ぶ)ので、おそらくPEP-8に取って代わります。結局のところ、「多くのプロジェクトには独自のコーディングスタイルガイドラインがあります。競合が発生した場合、そのようなプロジェクトそのプロジェクトでは、特定のガイドが優先されます。
Nick T

6
@TheHerkの理論的根拠は、最初の引数patterns()が一意(指定された他のすべてのプレフィックス)であり、他のすべての引数が基本的に同じURLパターンであることです。
Nick T

6
@NickTあなたはPEP-8を誤って読んでいます-PEP-8は、特定のプロジェクトがそれを使用する既存の規則に従うことを推奨します-しかし、この場合、コードはDjangoに入らず、Djangoを使用してプロジェクトに入ります-必要はありません彼らの慣習に従ってください。このルールの目的は、コードベース内で一貫性を保つことです。
Gareth Latty、2014年

25
PEP8は、意味がある場合はPEP8を無視する必要があることも述べていることに注意してください。自分のプロジェクトについては、自由に意見を異にしてください。いずれにしてもpatterns()、Django 1.8での使用は非推奨になるため、これは間もなく問題となります。docs.djangoproject.com
Tom Carrick

13

これは次のようなステートメントにも当てはまります(PyCharmによって自動フォーマットされます):

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

同じスタイルの警告が表示されます。それを取り除くために、私はそれを次のように書き直す必要がありました:

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

2
ここでは、バックスラッシュよりもかっこを優先します。最初の行はでreturn (、次に各行の返却可能なアイテムをインデントし、最後にと同じインデントレベルで別の行に閉じかっこを付けreturnます。編集:このようpastebin.com/fAe7558X
マルクスMeskanen

1
@MarkusMeskanenはい、私もです。自動フォーマットでさえこの仕様に完全には準拠していないことを指摘したかっただけです。
displayname
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.