プログラミングにおいて、ある条件の結果に応じて変数に代入する値を変えたいという場面は頻繁に発生します。
通常、if 文と else 文を使って記述しますが、Pythonではこれを1行で簡潔に書くための構文が用意されています。他の言語では「三項演算子」と呼ばれることが多いですが、Pythonの公式ドキュメントでは**「条件式 (conditional expression)」**と呼ばれています。
この記事では、この条件式の書き方と、通常の if 文との使い分けについて解説します。
三項演算子(条件式)の基本構文
Pythonの条件式は、英語の文章のように自然に読める語順になっています。
構文:
条件が真のときの値 if 条件式 else 条件が偽のときの値
条件式が True の場合は左側の値が、False の場合は右側の else 以降の値が評価(採用)されます。
具体的な使用例
例として、ユーザーの会員ランクに応じて、送料を決定するプログラムを作成します。
1. 通常の if-else 文で書いた場合
まず、従来の書き方を見てみます。
member_rank = "Gold"
shipping_fee = 0
# ランクが Gold なら送料は無料 (0)、それ以外は 500
if member_rank == "Gold":
shipping_fee = 0
else:
shipping_fee = 500
print(f"送料: {shipping_fee}円")
この処理は論理的に正しいですが、単純な値の代入に4行も費やしています。
2. 三項演算子を使って書いた場合
同じ処理を、条件式を使って書き換えます。
member_rank = "Gold"
# if else を1行で記述
shipping_fee = 0 if member_rank == "Gold" else 500
print(f"送料: {shipping_fee}円")
実行結果:
送料: 0円
非常にシンプルになりました。「送料は0円です、もしランクがGoldなら。そうでなければ500円です」というロジックが1行で表現されています。
別の例:偶数・奇数の判定
計算結果に基づいて文字列を切り替える例です。
number = 15
# 2で割った余りが0なら "Even", それ以外なら "Odd"
result_type = "Even" if number % 2 == 0 else "Odd"
print(f"{number} is {result_type}")
実行結果:
15 is Odd
注意点:可読性について
三項演算子はコードを短くするのに役立ちますが、多用しすぎると逆に可読性を損なう場合があります。
特に、条件式の中にさらに条件式を入れる(ネストする)ことは推奨されません。
# 非推奨: ネストした三項演算子(非常に読みにくい)
score = 75
grade = "A" if score >= 90 else "B" if score >= 70 else "C"
このような複雑な分岐になる場合は、素直に通常の if ... elif ... else 構文を使用する方が、コードを読む人にとって親切です。
まとめ
- Pythonでは
値1 if 条件 else 値2という構文で、条件に応じた値を1行で記述できます。 - これを「条件式」または「三項演算子」と呼びます。
- 単純な条件分岐による代入を行う場合に、コードを簡潔にするために使用します。
- 複雑な条件分岐には通常の
if文を使用し、可読性を維持することが重要です。
