5

私が正しく理解していれば

myvar = a and b or c

と同じ結果が得られます

if a:
  if b:
    myvar = b
  else:
    myvar = c
else:
  myvar = c

だから、よりエレガントだと思います。

JavaScript コードでこの種の短絡割り当てステートメントを見た記憶があるようです。しかし、割り当てステートメントでショートサーキットを使用することは、Python で良いスタイルと見なされますか?

4

2 に答える 2

13

ほとんどの場合、代わりに条件式を使用します。

myvar = b if a else c

短絡は非常に Pythonic ですが、bis 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)
于 2013-07-22T18:40:03.293 に答える
3

これは実際には意見の問題ですが、ほとんどの場合、答えはノーです。おそらく、投稿した本当の意味ではなく、「aがtrueの場合はbの値を使用し、そうでない場合はcの値を使用する」という意味だと人々が考える傾向があるため、複数のスタイルガイドに反します。

おそらく、代わりに新しい条件式の構文が必要です。

myvar = b if a else c
于 2013-07-22T18:40:56.727 に答える