ユーニックス総合研究所

  • home
  • archives
  • python-else-nanimoshinai

Pythonのelseで何もしない方法【if~else文】

  • 作成日: 2022-04-15
  • 更新日: 2024-01-06
  • カテゴリ: Python

Pythonのelseで何もしない方法

Pythonのif文ではelseを使うことができます。
if文の条件が偽だったときに実行されるのがelseです。

このelseで何もしない処理を書きたい場合はどうしたらいいのでしょうか?
結論から言うと「pass文」を使います。

このpass文を使うと「何もしない」という処理を書くことができます。

関連記事

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】

elseで何もしない

pass文を使ってif文のelseで何もしない処理を書くと↓のようになります。

if 0:  
    print('hello')  
else:  
    pass  

↑のコードの場合、if 0:という条件式は結果が偽(False)になります。
そのためprint('hello')という処理は実行されません。

ですので代わりにelse:の部分が実行されます。
else:の処理ではpass文が実行されますが、passは何もしない文です。

そのためプログラム的にはなにもしません。

elseとpass文は省略できる

「何もしないelse」というのは、何もしないわけですから省略することができます。
例えば先ほどのif文は

if 0:  
    print('hello')  
else:  
    pass  

というコードでしたが、このelseの部分は省略して

if 0:  
    print('hello')  

と書くこともできます。

しかし省略は可能ですが、意図的に省略しないケースもあります。
それは「何もしない」ということを明示したいときです。

elseを省略すると「elseを書き忘れたのかな?」と見た人は思うことがあります。
しかし明示的にelseとpass文を書いておけば「ああ、elseはなにもしないんだな」とわかります。

このように明示的にelseとpass文を書くと、「何もしない」ということをコード上で強調することができます。
チーム開発や長期開発などではこのような工夫をしておくと、コードがわかりやすくなります。

3項演算子ではpass文は使えない

Pythonのif文は3項演算子のように書くこともできます。
しかしこの書き方ではelseにpass文は書けません。

たとえば↓のようなコードは実行できません。

n = 1 if 1 else pass  
print(n)  

elseを省略したテクニック

if文のelseというのは味わい深いものがあります。
たとえば↓のコードをご覧ください。

def one_or_two(n):  
    if n == 0:  
        return 1  
    else:  
        return 2  

↑の関数は引数nが0だったら1を、0以外だったら2を返す関数です。
条件分岐ではif-else文を使っています。

しかしこれは↓のように書くこともできます。

def one_or_two(n):  
    if n == 0:  
        return 1  
    return 2  

↑のようにelseを省略し、return文だけ関数のお尻にちょこんと書きます。
これも動作的には同じ振る舞いをします。

これらの2つの書き方は、それぞれ使う人によって思想があります。
elseを省略しない書き方は、省略しないほうがif文の「それ以外」という文脈を明確にできる。
ということで好む人もいます。
いっぽうelseを省略する書き方は、コードが短くなるのでこっちのほうが好きという人もいます。

コードの動作的にはどちらも同じ動作をしますので、好きなほうを使うということになると思います。

おわりに

今回はPythonのelseで何もしない方法を解説しました。
elseで何もしないというのはコード的には「何もしない」ことを強調する意味があります。
良い感じで使っていきたいところです。

🦝 < elseで何もしない

🐭 < 何もしないという行動