logo

Python の Match Case ステートメント

C/C++ や Java などの言語を使用した開発者は、「 スイッチケース これ マッチケース で紹介したPythonのSwitch Caseです。 パイソン 3.10.ここでは、最初にパラメータを渡してから、どのケースでパラメータが満たされるかを確認する必要があります。一致するものが見つかった場合はコードが実行され、一致するものがまったくない場合はデフォルトのアクションが実行されます。

Python の Match Case ステートメントの構文

Python の match case ステートメントは次のように初期化されます。 マッチ キーワードの後に​​照合するパラメータを指定します。次に、次を使用してさまざまなケースが定義されます。 場合 パラメータと一致するキーワードとパターン。の _ すべてのケースがパラメータ値と一致しない場合に実行されるワイルドカード文字です。



match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>

目次

ミッションインポッシブルすべての映画

ここで、Python で match case ステートメントがどのように機能するかをいくつかの例で見てみましょう。

単純な Match Case ステートメント

単純な Python の match case ステートメントでは、正確な値が比較され、case パターン値と照合されます。さまざまなテスト ケースと、ケースが一致した場合にのみ実行される対応するコードがあります。それ以外の場合は、定義されたすべてのケースが一致しない場合に実行されるデフォルトのケースがあります。



例: この例では、単純な match case ステートメントを使用して、ユーザーに 1 から 3 までの値を入力し、対応する数値を単語で表示するように求めます。

パイソン
# simple match case statement def runMatch(): num = int(input('Enter a number between 1 and 3: ')) # match case match num: # pattern 1 case 1: print('One') # pattern 2 case 2: print('Two') # pattern 3 case 3: print('Three') # default pattern case _: print('Number not between 1 and 3') runMatch()>

出力:

Enter a number between 1 and 3: 5 Number not between 1 and 3>

OR 演算子を使用した Match Case ステートメント

マッチケース Python のステートメントは、パターンと特定のキーワードまたはパラメーターのみを照合することを目的としています。ただし、同じ出力が得られるケースが複数ある場合は、Python で match case ステートメントを使用することもできます。この場合、match case ステートメントで OR 演算子とも呼ばれるパイプ演算子を使用できます。



例: この例では、ユーザーに 1 から 6 までの値を入力するよう求めます。次に、OR 演算子を使用して大文字と小文字の一致を使用して、ペアを 1 つの大文字と小文字の組み合わせに分割し、対応する数字を単語で表示します。

パイソン
# python match case with OR operator def runMatch(): num = int(input('Enter a number between 1 and 6: ')) # match case match num: # pattern 1 case 1 | 2: print('One or Two') # pattern 2 case 3 | 4: print('Three or Four') # pattern 3 case 5 | 6: print('Five or Six') # default pattern case _: print('Number not between 1 and 6') runMatch()>

出力:

Enter a number between 1 and 6: 4 Three or Four>

Python If 条件を使用した Match Case ステートメント

また、 PythonのIf条件 正確な値を一致させる代わりに、条件を使用する場合は、match case ステートメントとともに使用します。条件に基づいて、値が True でケース パターンに一致する場合、コード ブロックが実行されます。

例: この例では、if 条件と match case ステートメントを使用して、ユーザー ID に入力された数値が正、負、またはゼロであるかどうかを確認します。

パイソン
# python match case with if condition def runMatch(): num = int(input('Enter a number: ')) # match case match num: # pattern 1 case num if num>0: print('Positive') # パターン 2 case num if num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

出力:

Enter a number: -15 Negative>

大文字と小文字をシーケンスパターンと一致させる

Python の match case ステートメントは、リストや文字列などのシーケンス パターンを照合するためによく使用されます。これは非常に簡単で、パターンをチェックするために位置引数を使用できます。

シュリデヴィ

例: この例では、Python 文字列を使用して、文字列に文字が存在するかどうかを確認しています。 または大文字と小文字の一致を使用しません。文字列内で大文字と小文字が一致するかどうかを確認する文字のインデックスとともに文字列を提供します。次に、その文字が何であるかについて一致ケースを定義しました。

パイソン
# match case to check a character in a string def runMatch(): myStr = 'Hello World' # match case match (myStr[6]): case 'w': print('Case 1 matches') case 'W': print('Case 2 matches') case _: print('Character not in the string') runMatch()>

出力:

Case 2 matches>

例: この例では、 Pythonのリスト パターンマッチング用。失われた要素の最初の要素を照合し、リストの残りの部分を照合するために位置引数も使用しました。

パイソン
# python match case with list def runMatch(mystr): # match case match mystr: # pattern 1 case ['a']: print('a') # pattern 2 case ['a', *b]: print(f'a and {b}') # pattern 3 case [*a, 'e'] | (*a, 'e'): print(f'{a} and e') # default pattern case _: print('No data') runMatch([]) runMatch(['a']) runMatch(['a', 'b']) runMatch(['b', 'c', 'd', 'e'])>

出力:

No data a a and ['b'] ['b', 'c', 'd'] and e>

Case ステートメントを Python 辞書と一致させる

Python の match case ステートメントで処理できるもの 辞書 同じように。単一のキーまたは複数のキーと一致します。キーと値はディクショナリ内に存在する必要があります。値が間違って配置されている場合、またはキーが存在せず、実際のディクショナリと値に一致しない場合、そのケースは破棄されます。

例: この例では、Python で match case ステートメントを含む辞書を使用しています。大文字と小文字の一致に応じて異なるデータを持つ辞書が提供されており、提供された異なる大文字と小文字の辞書キーが一致します。

パイソン
# match case with python dictionaryu def runMatch(dictionary): # match case match dictionary: # pattern 1 case {'name': n, 'age': a}: print(f'Name:{n}, Age:{a}') # pattern 2 case {'name': n, 'salary': s}: print(f'Name:{n}, Salary:{s}') # default pattern case _ : print('Data does not exist') runMatch({'name': 'Jay', 'age': 24}) runMatch({'name': 'Ed', 'salary': 25000}) runMatch({'name': 'Al', 'age': 27}) runMatch({})>

出力:

Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>

Case ステートメントと Python クラスの一致

私たちも使うことができます Python クラス Python の match case ステートメントを使用して大文字と小文字を一致させます。これにより、コードが非常にクリーンで整然とし、さらに重要なことに読みやすくなります。 Python データクラス モジュールを使用します。

例: この例では、Person と Programmer という 2 つのクラスを作成しました。 match ステートメントを見た後、最初に考えられるのは、match ステートメント内のプログラマーとユーザーがそれぞれのクラスのインスタンスを作成するのではないかということですが、実際はそうではありません。指定された値を持つインスタンスがチェックされます。したがって、Programmer(Om, language = Python, Framework = Django) の場合はインスタンスを作成しませんが、渡された名前が instance であるオブジェクトが Programmer クラスの実際のインスタンスであることを確認し、その後、名前が Om であるかどうかを確認します。 、言語は Python、次にフレームワークは Django です。このようにして、任意のクラスのインスタンスの値をチェックできます。

パイソン
# match case with python classes # import dataclass module from dataclasses import dataclass #Class 1 @dataclass class Person: name: str age: int salary: int # class 2 @dataclass class Programmer: name: str language: str framework: str def runMatch(instance): # match case match instance: # pattern 1 case Programmer('Om', language='Python', framework='Django'): print(f'Name: Om, Language:Python, Framework:Django') # pattern 2 case Programmer('Rishabh', 'C++'): print('Name:Rishabh, Language:C++') # pattern 3 case Person('Vishal', age=5, salary=100): print('Name:Vishal') # pattern 4 case Programmer(name, language, framework): print(f'Name:{name}, Language:{language}, Framework:{framework}') # pattern 5 case Person(): print('He is just a person !') # default case case _: print('This person is nothiing!') programmer1 = Programmer('Om', 'Python', 'Django') programmer2 = Programmer('Rishabh', 'C++', None) programmer3 = Programmer('Sankalp', 'Javascript', 'React') person1 = Person('Vishal', 5, 100) runMatch(programmer1) runMatch(programmer2) runMatch(person1) runMatch(programmer3)>

出力:

Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>

Python の Match Case ステートメントに関するよくある質問

Q: Python の match case ステートメントとは何ですか?

A: match-case ステートメントはパターン マッチングとも呼ばれ、Python 3.10 で導入された機能です。これは、タプル、リスト、クラスなどのデータ構造に対してパターン マッチングを実行するための簡潔かつ表現力豊かな方法を提供します。これにより、式の値を一連のパターンと照合し、一致したパターンに対応するコード ブロックを実行できます。

Q: match case ステートメントは if-elif-else ステートメントとどのように異なりますか?

A: match-case ステートメントは、if-elif-else ステートメントと比較して、より強力で表現力豊かな構造です。 if-elif-else ステートメントはブール式に依存しますが、match-case ステートメントはデータの構造と値に基づいてパターンを照合できます。 Match-case ステートメントは、複数の条件を処理し、それらの条件に基づいてさまざまなアクションを実行するための、より構造化された読みやすい方法を提供します。

Q: match-case ステートメントを使用する利点は何ですか?

A: match-case ステートメントには、次のようないくつかの利点があります。

  • 簡潔さ: Match-case ステートメントを使用すると、複雑な分岐ロジックを簡潔で読みやすい方法で表現できます。
  • 可読性: パターン マッチングにより、コードが問題領域に非常に似ているため、コードがより読みやすくなり、一目瞭然になります。
  • 安全性: Match-case ステートメントは徹底的なパターン マッチングを提供し、考えられるすべてのケースが確実に処理されます。