18

連鎖関数呼び出しをますます使用します。

value = get_row_data(original_parameters).refine_data(leval=3).transfer_to_style_c()

長くなる可能性があります。コード内の長い行を節約するには、どちらが優先されますか?

value = get_row_data(
    original_parameters).refine_data(
    leval=3).transfer_to_style_c()

また:

value = get_row_data(original_parameters)\
       .refine_data(leval=3)\
       .transfer_to_style_c()

\バックスラッシュを使っ.functionて改行するのがいい感じです。これにより、各関数呼び出しに独自の行があり、読みやすくなります。しかし、これは多くの人に好まれないようです。そして、コードに微妙なエラーが発生したり、デバッグが困難になったりすると、backslash (\). .

Pythonスタイルガイドから引用するには:

式を括弧で囲むことにより、長い行を複数の行に分割できます。これらは、行の継続にバックスラッシュを使用するよりも優先して使用する必要があります。継続する行は適切にインデントしてください。二項演算子を回避するのに適した場所は、演算子の前ではなく、演算子の後です。

4

3 に答える 3

24

私は以下を好む傾向があります。これは、開き括弧のおかげで、推奨されないを避けています。 \

value = (get_row_data(original_parameters)
         .refine_data(level=3)
         .transfer_to_style_c())

この構文の利点の 1 つは、各メソッド呼び出しが独自の行にあることです。

同様の種類の\-less 構造は、文字列リテラルでも役立つことが多く、1 行あたりの推奨される 79 文字の制限を超えないようにします。

message = ("This is a very long"
           " one-line message put on many"
           " source lines.")

これは単一の文字列リテラルであり、Python インタープリターによって効率的に作成されます (これは、メモリ内に複数の文字列を作成し、最終的な文字列が取得されるまで複数回コピーする文字列の合計よりもはるかに優れています)。

Python のコードの書式設定優れています。

于 2012-08-12T08:12:49.703 に答える
2

このオプションはどうですか:

value = get_row_data(original_parameters,
            ).refine_data(leval=3,
                ).transfer_to_style_c()

他のパラメーターがない場合、コンマは冗長であることに注意してください。ただし、一貫性を維持するためにそれらを保持しています。

于 2012-08-12T08:08:55.130 に答える
1

私自身の好みを引用しないでください(ただし、質問のコメントを参照してください:))、またはこれに対する代替の回答は次のとおりです。

すでにあるプロジェクトのスタイル ガイドラインに固執してください。特に明記されていない場合は、残りのコード ベースのスタイルとできる限り一貫性を保ってください。

それ以外の場合は、好きなスタイルを選んでそれに固執してください-そして、1行で合理的に読めない場合(または記述したい方法で)、チェーン関数呼び出しをどのように書くかを他の人に知らせてください.

于 2012-08-12T08:21:21.787 に答える