(最終更新日:2023年7月)
✔このような方へ向けて書かれた記事となります
「PythonでSwitch文は作れるの?」
「PythonでSwitch文を作るとしたらどうしたら良いのだろうか?」
「PythonでSwitch文に相当する実例を見てみたい」
✔当記事を通じてお伝えすること
- PythonのSwitch文概要
- Switch文に相当する書き方
- PythonでSwitch文を用いた具体例
当記事では、PythonでSwitch文がどのように実装できるかを、実例を交えてわかりやすく解説しています。
ぜひ最後までお読みください。
PythonにおけるSwitch文の前提知識
こちらでは、PythonにおけるSwitch文を理解するための前提知識についてお伝えします。
- Switch文とは
- Pythonでの代替方法の必要性
Switch文とは
Switch文は、多くのプログラミング言語で見られる制御文です。
この文は、変数の値に基づいて、多くの異なるアクションまたはコードブロックのいずれかを実行するために使用されます。
if-else文とは異なり、Switch文は通常、コードをより整理され、読みやすくします。
例:C言語のSwitch文
switch (x) {
case 1:
printf("x is 1");
break;
case 2:
printf("x is 2");
break;
default:
printf("x is neither 1 nor 2");
}
Pythonでの代替方法の必要性
Python言語はSwitch文をサポートしていません。
Pythonの設計哲学は、明確で読みやすいコードを重視するため、Switch文が不要とされたのです。
しかし、多くの条件を持つプログラムではSwitch文が便利であるため、PythonでもSwitch文の代替手段を模索する必要があります。
PythonにおけるSwitch文の代替手段
PythonでSwitch文のような機能を実現するには、if-elif-elseを使う方法と辞書を使う方法があります。
- if-elif-elseを使う方法
- 辞書を使う方法
if-elif-elseを使う方法
Switch文に代わる方法として、if-elif-else文があります。
その構文と具体例をご覧ください。
- 基本構文
- 実践例と注意事項
基本構文
Pythonでは、if, elif, elseキーワードを使用してSwitch文のような条件分岐をおこなえます。
x = 1
if x == 1:
print("x is 1")
elif x == 2:
print("x is 2")
else:
print("x is neither 1 nor 2")
実践例と注意事項
上記の基本構文を使用して、実際のプログラムで複数の条件を持つ場合の処理をおこなえます。
ただし条件が多い場合、if-elif-else文が長くなり、可読性が低下することがあるため注意が必要です。
day = "Tuesday"
if day == "Monday":
print("Today is Monday")
elif day == "Tuesday":
print("Today is Tuesday")
elif day == "Wednesday":
print("Today is Wednesday")
# ... 続きます。。。
else:
print("Invalid day")
辞書を使う方法
if-elif-else文以外にも辞書を使う方法があります。
少しトリッキーなやり方なので、詳しく見ていきましょう。
- 基本構文
- 実践例と注意事項
基本構文
辞書を使用してSwitch文のような条件分岐が実装できます。
この方法では、辞書のキーを条件とし、値に関数を指定するのです。
def case_1():
return "This is case 1"
def case_2():
return "This is case 2"
switch_dict = {
1: case_1,
2: case_2
}
x = 1
print(switch_dict.get(x, lambda: "Invalid case")())
実践例と注意事項
辞書を使用したSwitch文の代替は、特に大量の条件分岐が存在する場合に有効です。
コードの可読性を保てます。
def monday():
return "Today is Monday"
def tuesday():
return "Today is Tuesday"
def default():
return "Invalid day"
days = {
"Monday": monday,
"Tuesday": tuesday
}
day = "Monday"
action = days.get(day, default)
print(action())
ただし、辞書内に関数を用意する必要があるため、簡潔な条件分岐には向いていない可能性があります。
Python 3.10以降で利用可能なmatch文
Python 3.10では、新たな制御文であるmatch文が導入されました。
これは、他言語のSwitch文に似た機能を提供するものです。
- match文とは
- 基本構文と使い方
- 例題と注意事項
match文とは
Pythonにおいて、match
文はPEP 634で提案された新しい制御構造のひとつです。
この構文は、パターンマッチング(pattern matching)を実現するために導入されました。
match
文により、与えられた値を複数のパターンにマッチさせ、最初にマッチしたパターンに基づいて対応するコードブロックを実行できます。
パターンは様々な形式で指定でき、定数、変数、リテラル、データ構造などを使ってマッチングが可能です。
以下に、match
文の基本的な構文と使用例を示します。
match value:
case pattern_1:
# パターン1にマッチした場合の処理
case pattern_2:
# パターン2にマッチした場合の処理
...
case pattern_n:
# パターンnにマッチした場合の処理
case _:
# どのパターンにもマッチしなかった場合の処理
以下に、match
文の使用例を示します。
def calculate_grade(score):
match score:
case 90 <= score <= 100:
return "A"
case 80 <= score < 90:
return "B"
case 70 <= score < 80:
return "C"
case 60 <= score < 70:
return "D"
case _:
return "F"
grade = calculate_grade(85)
print(grade) # 結果: "B"
この例では、calculate_grade
関数に与えられたスコアに基づいて、成績を計算するためにmatch
文を使用しています。
match
文はスコアの値を複数のパターンにマッチさせ、最初にマッチしたパターンに基づいて該当する成績を返すもの。
match
文はPython 3.10以降で利用可能であり、柔軟で強力なパターンマッチングを実現するための新しい機能です。
コードの可読性と保守性を向上させるために、適切な場面で利用しましょう。
基本構文と使い方
match文は次のように使用することができます。
def get_day_name(day_number):
match day_number:
case 0:
return "Sunday"
case 1:
return "Monday"
case 2:
return "Tuesday"
# ...
case _:
return "Invalid day number"
例題と注意事項
match文はパターンマッチングをサポートしており、リストやタプルなどのデータ構造にも使用できます。
これにより、コードがより柔軟で表現豊かになるでしょう。
def match_shapes(shape):
match shape:
case ("circle", radius) if radius > 0:
return f"A circle with radius {radius}"
case ("rectangle", width, height) if width > 0 and height > 0:
return f"A rectangle with width {width} and height {height}"
case _:
return "Invalid shape"
print(match_shapes(("circle", 5)))
print(match_shapes(("rectangle", 2, 3)))
match文を使用する際の注意点として、case
ブロック内の条件は、上から順に評価されるため、具体的な条件を上に、一般的な条件を下に配置する必要があります。
パターンマッチングを使いすぎると、コードの可読性が低下する可能性があることも考慮しましょう。
まとめ
PythonでSwitch文の代替手段を活用し、効率的なプログラムを書く方法について紹介しました。
Pythonでは、Switch文がサポートされていないため、if-elif-else文や辞書を使って条件分岐をおこないましょう。
ただPython 3.10以降では、match文を使用してパターンマッチングも可能。
いろいろと手を動かしながら、一番良い方法を身につけてください。
基本的なプログラミングスキルを身につけたら、さらに深い知識を学ぶために公式ドキュメントやオンラインコースを活用しましょう。
これらを活用して、スキルをさらに向上させてください。