1. ホーム
  2. python

[解決済み] if' ステートメントで複数行の条件をスタイリングしますか?[クローズド]

2022-03-22 23:06:04

質問

で長い条件を解除することがあります。 if を複数行に分割しています。一番わかりやすいのは、この方法です。

  if (cond1 == 'val1' and cond2 == 'val2' and
      cond3 == 'val3' and cond4 == 'val4'):
      do_something

アクションが条件になじんでしまうので、視覚的にあまり魅力的ではありません。しかし、Pythonの正しいインデント(空白4文字)を使用した自然な方法なのです。

今のところ、私が使っているのは

  if (    cond1 == 'val1' and cond2 == 'val2' and
          cond3 == 'val3' and cond4 == 'val4'):
      do_something

でも、これではあまりきれいではありませんね :-)

別の方法を教えてください。

どのように解決するのですか?

条件行の2行目にスペースを4つ使う必要はありません。 多分、使うでしょう。

if (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something

また、空白文字は意外と自由度が高いことも忘れてはいけません。

if (   
       cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'
   ):
    do_something
if    (cond1 == 'val1' and cond2 == 'val2' and 
       cond3 == 'val3' and cond4 == 'val4'):
    do_something

どちらもかなり醜いですけどね。

多分、括弧をなくして( スタイルガイド を使うことをお勧めします)?

if cond1 == 'val1' and cond2 == 'val2' and \
   cond3 == 'val3' and cond4 == 'val4':
    do_something

これで少なくとも差別化はできる。

あるいは、さらに

if cond1 == 'val1' and cond2 == 'val2' and \
                       cond3 == 'val3' and \
                       cond4 == 'val4':
    do_something

好みだと思います。

if cond1 == 'val1' and \
   cond2 == 'val2' and \
   cond3 == 'val3' and \
   cond4 == 'val4':
    do_something

ここで スタイルガイド 2010年以降、ブラケットを使うことが推奨されています。