Pythonの else if はこうやって書きます【elifを使った条件分岐】
目次
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
の条件式が真のときにインデントされた実行内容が実行されます。
条件式が偽の時は次のelif
かelse
に処理が移ります。
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
を繋げて複数の条件に対応できるようにします。
たとえば色があって色がred
かgreen
かblue
かどうか判定したいとします。
そういう時は
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
を使いましょう。