web-dev-qa-db-ja.com

python

このような変数に値を割り当てるのは悪いスタイルと考えられていますか?

x = "foobar" or None
y = some_variable or None

上記の例では、xは値「foobar」を取得します。

36
TheOne

いいえ、それは一般的な習慣です。それはあなたよりもかなり長い表現に対しては悪いスタイルだと考えられています。

24
tback

このようなことをすることの主な危険は、(2番目の場合)some_variableはFalseですが、なしではありません(整数0、たとえば)、その場合、yがNoneに等しくならないようにします。

15

また、そういう表現を使うと、少し不安を感じます。ラーニングではPython 4edは「やや珍しい振る舞い」と呼ばれています。後でMark Lutzは言います:

...それは、Pythonでかなり一般的なコーディングパラダイムであることがわかります。固定サイズのセットから空でないオブジェクトを選択するには、単純にor式でそれらをつなぎ合わせます。より単純な形式では、これは一般的にデフォルトを指定するためにも使用されます...

実際、コードからラインノイズを除去するのに役立つ簡潔な1行式を生成します。
この動作は、if/else三項演算子の形式の基礎です。

A = Y if X else Z
4
joaquin