Python 3.10では、新たにパターンマッチングという機能が導入されました。これは、特定のパターンに一致する値を変数に代入するための機能で、以下のようなコードを書くことが可能になりました。

def handle(retcode):
    match retcode:
        case 200:
            print('success')
        case 404:
            print('not found')
        case _:
            print('unknown')

しかし、この新機能には一つ注意点があります。それは、リテラル値(直接書かれた値)以外の値をパターンマッチングで使用すると、エラーが発生するということです。例えば、以下のようなコードはエラーとなります。

SUCCESS = 200
NOT_FOUND = 404

def handle(retcode):
    match retcode:
        case SUCCESS:
            print('success')
        case NOT_FOUND:
            print('not found')
        case _:
            print('unknown')

この問題を解決するためには、定数(変更されない値)を格納するクラスを作成し、そのクラスの属性として定数を定義する方法があります。以下にその例を示します。

class Codes:
    SUCCESS = 200
    NOT_FOUND = 404

def handle(retcode):
    match retcode:
        case Codes.SUCCESS:
            print('success')
        case Codes.NOT_FOUND:
            print('not found')
        case _:
            print('unknown')

このように、Python 3.10のパターンマッチングは強力な機能ですが、その使用方法には注意が必要です。特に、変数に格納された値をパターンとして使用する場合には、上記のような工夫が必要となります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です