このような変数に値を割り当てるのは悪いスタイルと考えられていますか?
x = "foobar" or None
y = some_variable or None
上記の例では、xは値「foobar」を取得します。
いいえ、それは一般的な習慣です。それはあなたよりもかなり長い表現に対しては悪いスタイルだと考えられています。
このようなことをすることの主な危険は、(2番目の場合)some_variable
はFalseですが、なしではありません(整数0
、たとえば)、その場合、y
がNoneに等しくならないようにします。
また、そういう表現を使うと、少し不安を感じます。ラーニングではPython 4edは「やや珍しい振る舞い」と呼ばれています。後でMark Lutzは言います:
...それは、Pythonでかなり一般的なコーディングパラダイムであることがわかります。固定サイズのセットから空でないオブジェクトを選択するには、単純にor式でそれらをつなぎ合わせます。より単純な形式では、これは一般的にデフォルトを指定するためにも使用されます...
実際、コードからラインノイズを除去するのに役立つ簡潔な1行式を生成します。
この動作は、if/else三項演算子の形式の基礎です。
A = Y if X else Z