私が正しく理解していれば
myvar = a and b or c
と同じ結果が得られます
if a:
if b:
myvar = b
else:
myvar = c
else:
myvar = c
だから、よりエレガントだと思います。
JavaScript コードでこの種の短絡割り当てステートメントを見た記憶があるようです。しかし、割り当てステートメントでショートサーキットを使用することは、Python で良いスタイルと見なされますか?
私が正しく理解していれば
myvar = a and b or c
と同じ結果が得られます
if a:
if b:
myvar = b
else:
myvar = c
else:
myvar = c
だから、よりエレガントだと思います。
JavaScript コードでこの種の短絡割り当てステートメントを見た記憶があるようです。しかし、割り当てステートメントでショートサーキットを使用することは、Python で良いスタイルと見なされますか?
ほとんどの場合、代わりに条件式を使用します。
myvar = b if a else c
短絡は非常に Pythonic ですが、b
is false-y;の落とし穴に注意してください。その場合、短絡を使用すると異なる結果になります。ほとんどの場合、代わりに代入したくありませんc
。
その場合でも、調整された条件で同じ結果を得ることができます。
myvar = b if a and b else c
短絡はデフォルトに最適です。
foo = somevar or 'bar'
または、前提条件が満たされていることを確認するため:
foo = somevar and function_raises_exception_if_passed_empty_value(somevar)
これは実際には意見の問題ですが、ほとんどの場合、答えはノーです。おそらく、投稿した本当の意味ではなく、「aがtrueの場合はbの値を使用し、そうでない場合はcの値を使用する」という意味だと人々が考える傾向があるため、複数のスタイルガイドに反します。
おそらく、代わりに新しい条件式の構文が必要です。
myvar = b if a else c