Pythonの else if はこうやって書きます【elifを使った条件分岐】

670, 2023-05-30

目次

Pythonの else if はこうやって書きます

Pythonではelse ifを書くときはelifを使って書きます。
以下のようにです。

if 0:
    print('if')
elif 1:
    print('elif')
else:
    print('else')

上記のコードを実行すると

elif

と出力されます。

参考:4. その他の制御フローツール — Python 3.11.3 ドキュメント

elifの構造と仕組み

Pythonのelifはif文の一部で使われるものです。
使われたり使われなかったりします。
つまり使うかどうかは書き手の自由です。

elifは以下のような構造になっています。

elif 条件式:
    真の時の実行内容

elifの条件式が真のときにインデントされた実行内容が実行されます。
条件式が偽の時は次のelifelseに処理が移ります。

elifは単独で使うことはできません。
かならずif文と一緒に使います。

if 0:
    print('if')
elif 1:
    print('elif 1')
elif 2:
    print('elif 2')
else:
    print('else')

if文ではif部とelse部は1つだけです。
しかしelif部は無数に繋げることができます。

処理はまずif部の条件式の判定に始まり、次にelif部の条件式の判定に移ります。
またそれが偽なら次のelif部の条件式に移り、そういった感じで繰り返していきます。
最後にelse部があればそのelseの実行内容が実行されます。

elifはどんな時に使うか?

条件が複数の条件になる場合はelifを繋げて複数の条件に対応できるようにします。
たとえば色があって色がredgreenblueかどうか判定したいとします。

そういう時は

color = 'green'

if color == 'red':
    print('RED')
elif color == 'green':
    print('GREEN')
elif color == 'blue':
    print('BLUE')
else:
    print('unknown')

こういう感じでコードを書いて、それぞれの色の場合についてのコードを書きます。
else部では対応していない色の場合にどうするかを書きます。

elifはいくつ繋げられるのか?

Python3.10で実験してみました。
25,000個のelifを繋げてみたところ以下のエラーが出ました。

RecursionError: maximum recursion depth exceeded during compilation

RecursionErrorということは再帰エラーですね。
おそらくelifの実装が再帰的に行われているのかもしれません。
5,000個まで減らしたらちゃんと実行されました。

ということで繋げられるelifは5,000個ぐらい、ということになります。

なぜPythonではelifなのか?

なぜPythonではelse ifではなくelifが採用されているのか。
これを知るには言語設計者に聞かないことにはわかりません。
想像ですがタイプ数を減らすためにelifを採用したのではないでしょうか。

(^ _ ^)

適当言ってるな

(・ v ・)

せやな

おわりに

今回はPythonの else if の書き方を解説しました。
Pythonではelifを使いましょう。



この記事のアンケートを送信する