1

たとえば、sum_p がゼロでない場合は D。

D = 1/sum_p if sum_p \
    else 0

値を返したい場合はどうすればよいですか? 私はすべきですか:

return 1/sum_p if sum_p \
else 0

または単に書く

if...
else: return 0
4

4 に答える 4

5

単一ステートメントの条件付きリターンを実行する場合は、次を使用します。

return 1 / sum_p if sum_p else 0

これは声明ではありませんif条件式です。と考えてください。

return (this_value if this_condition_is_true else that_value)

それreturn自体は条件です。

行が十分に長い場合は、分割する必要があります。スタイル的には、通常のifステートメントと 2 つのreturnステートメントを使用することをお勧めします。

一般に、行末記号として使用しない\でください。PEP-8は、常に括弧を使用することを推奨しています:

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

于 2012-04-17T17:04:35.713 に答える
0

\どうしても必要な場合以外は使用しないでください。

使用する

D = 0 if not sum_p else 1.0/sum_p

または

return 0 if not sum_p else 1.0/sum_p

行が長くなりすぎたり、複雑になったりした場合は、次を使用してください。

if cond: ...
else : ....
于 2012-04-17T17:04:45.347 に答える
0

変数に割り当てる場合は、最初の方法で問題ありません。

値を返す場合は、割り当てをreturnステートメントに置き換えます。

例:

return 1/sum_p if sum_p \
else 0
于 2012-04-17T17:02:02.923 に答える
0

個人的には、改行をエスケープしないことを好みます。多くの場合、括弧を使用して同じ目的を達成できます。\ の後のスペースとしてエスケープされた改行を使用すると、間違いが発生する可能性が非常に高く、コードが壊れる可能性があります。あなたの例を使用するには:

return (1.0 / sum_p if sum_p
    else 0)
于 2012-04-17T17:03:28.920 に答える