【Python】if文と三項演算子(条件演算子)を比較した。

eyecatch-python-if-vs-tenary-operator

眼鏡ケースに指を挟んで内出血したmizkyです。

条件分岐を三項演算子で書いているときに、思ったことがあります。

三項演算子で書く意味ある?????

個人的に三項演算子を使用した条件分岐は読みにくいんですよね。。。
if文の方が見やすいと思っている人の方が多い気がします(場合にもよりますが)。

なので、今回は条件分岐の際にif文と三項演算子のどちらを使用したほうがいいのかまとめました。

1. 可読性(コードの読みやすさ)

どう考えても(特に初心者にとっては)三項演算子よりif文の方が圧倒的にコードが読みやすいです。

if x > 100:
    y = x - 100
else:
    y = x + 100

if文による条件分岐です。

xが100以上の時はマイナス100をしてyに代入、それ以外はプラス100してyに代入するコードです。
小学5年生でも分かりそうです。

これを三項演算子で書くと

 y = x - 100 if x > 100 else x + 100

こうなります。おそらくこれは小学5年生では分かりません。

一瞬何がしたいのか理解できません。私だけですかね。

2. elseが無い場合

if x > 100:
    y = x - 100

if文はelseが無くても処理が実行されます。

対して三項演算子ですが

>>> y = x - 100 if x > 100
  File "<stdin>", line 1
    y = x - 100 if x > 100
                         ^
SyntaxError: invalid syntax

SyntaxErrorです。

三項演算子でif文を書く場合は、
必ずifがFalseだった場合の値について定義しないといけない
ようです。

3. 複雑な条件分岐

if x > 10:
    if x > 20 and y > 30:
         z = x + y
    elif x > 15 and y > 20:
         z = x * y
    else:
         z = x ** y
else:
  if 0 < x < 5:
        z = x - y
    else:
        pass

このように、if文は複雑な条件分岐を行うことができます。

三項演算子を用いてこのような複雑な分岐を書くことはできません。
書けたとしても難解すぎて誰も読もうとしないと思います。

4. 行数

少し可読性と被るところはあるかもしれませんが、、、
1. 可読性のところのコードを比較してみると

if文が4行で書けるところを、三項演算子は1行で書けます。

もっとも行数が少ないからと言って、読みやすいかどうかは別だと思いますが。。。

三項演算子推しプログラマー
三項演算子推しプログラマー

お前さっきから三項演算子disりすぎじゃない?

正直、ここまで見ると三項演算子を使用するメリットってなくね?となりますが、私はふと思いました。

処理に関しては三項演算子の方が速いのでは? と。

処理時間(パフォーマンス)

処理時間(パフォーマンス)については別記事にて調査しました。

結論から言うと、三項演算子よりもif文の方が処理時間が僅かに速い(パフォーマンスが良い)です。

ただし、ほとんど誤差の範囲内なので気にする必要はないかと思います。

結論

特に1行で書く必要ない場合は、三項演算子よりもif文で書いた方が良さそうです。

コメント

タイトルとURLをコピーしました