Python 3.10では、新たにmatch-case
文が導入されました。これは他の言語でいうところのswitch-case
文に相当します。特に、複数のケースを一度に扱う方法について説明します。
複数のケースを一度に扱う
match-case
文では、一つのcase
文で複数のパターンを扱うことができます。具体的には、以下のように|
(OR)を使って複数のリテラルを一つのパターンとして指定することができます。
def sayHi(name):
match name:
case 'Egide' | 'Eric':
return f"Hi Mr {name}"
case 'Egidia':
return f"Hi Ms {name}"
この例では、name
が'Egide'
または'Eric'
の場合に"Hi Mr {name}"
を返し、name
が'Egidia'
の場合に"Hi Ms {name}"
を返します。
ガード節を使った複数のケースの扱い方
また、if
を使ったガード節を使うことで、リストなどのイテラブルなオブジェクトに含まれる要素に対するマッチングも可能です。
CONSTANTS = ['a', 'b', 'c', ...] # a (possibly large) iterable
def demo(item):
match item:
case item if item in CONSTANTS:
return f"{item} matched"
case _:
return f"No match for {item}"
この例では、item
がCONSTANTS
に含まれる場合に"{item} matched"
を返し、それ以外の場合に"No match for {item}"
を返します。
以上、Python 3.10のmatch-case
文で複数のケースを扱う方法について説明しました。この機能を活用することで、より柔軟な条件分岐を実現できます。