1

PEP8 に準拠しようとすると、80 文字の制限内に収めることが非常に難しい場合があります。例えば:

for i in range(10):
    for k in range(10):
        if k < 5:
            try:
                with line as open(file):
                    if line.blah in text:
                        dosomethingwithnospaceleft(bla,
                                                   bla,
                                                   )

私が言いたいのは、80 文字という制限は時々ばかげて、ある意味で読みにくくなるということです。このフォーマットの背後にある理由は何でしたか? 20歳以上のエディターを使用していない大多数の人々にとって、それは時代遅れの標準ではありませんか?

4

2 に答える 2

6

通常、行の長さを制限すると、テキストが読みやすくなります。また、非常に多くのレベルをインデントすることは、通常、何かを別の関数に分解する必要があることを示しています。

インデント レベルを節約して、早めに続行することもできます ( if k >= 5: continueif line.blah not in text: continue)。

于 2012-06-28T07:55:05.847 に答える
0

PEP -008より

最大行長

すべての行を最大 79 文字に制限します。

80 文字行に制限されているデバイスがまだたくさんあります。さらに、ウィンドウを 80 文字に制限すると、複数のウィンドウを並べて表示できます。このようなデバイスでのデフォルトのラッピングは、コードの視覚的な構造を混乱させ、理解をより困難にします。したがって、すべての行を最大 79 文字に制限してください。テキストの長いブロック (docstring またはコメント) を流す場合は、長さを 72 文字に制限することをお勧めします。

長い行をラップする好ましい方法は、Python の暗黙の行継続を括弧、ブラケット、およびブレース内で使用することです。式を括弧で囲むことにより、長い行を複数の行に分割できます。これらは、行の継続にバックスラッシュを使用するよりも優先して使用する必要があります。継続する行は適切にインデントしてください。二項演算子を回避するのに適した場所は、演算子の前ではなく、演算子の後です。いくつかの例:

class Rectangle(Blob):

    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        if (width == 0 and height == 0 and
            color == 'red' and emphasis == 'strong' or
            highlight > 100):
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so -- values are %s, %s" %
                             (width, height))
        Blob.__init__(self, width, height,
                      color, emphasis, highlight)
于 2012-06-28T07:56:47.573 に答える