반응형

match는 Python 3.10에서 도입된 새로운 제어문으로, 패턴 매칭(pattern matching)을 지원합니다. 이 기능은 스위치문과 비슷하지만, 더 강력하고 유연하게 사용할 수 있습니다. 특히 구조적 데이터를 다루는 경우, match 문을 사용하여 여러 조건에 따라 분기하는 코드가 간결하고 가독성 있게 작성됩니다.

match 문 기본 구조

def match_example(value):
    match value:
        case 1:
            print("정수 1입니다.")
        case 2:
            print("정수 2입니다.")
        case 3 | 4 | 5:
            print("정수 3, 4, 또는 5 중 하나입니다.")
        case _:
            print("해당하지 않는 값입니다.")

위의 코드에서 match 문은 value 변수의 값에 따라 다양한 조건을 검사하고, 일치하는 case에 따라 동작을 수행합니다. _는 와일드카드(wildcard)로, 어떤 값이 들어와도 매칭되도록 하여 기본적인 'default' 역할을 합니다.

복잡한 구조와 패턴 매칭

match 문은 중첩된 구조적 데이터, 예를 들어 딕셔너리나 튜플 같은 데이터도 매칭할 수 있어 매우 유용합니다.

def process_data(data):
    match data:
        case {"type": "person", "name": name, "age": age}:
            print(f"이름: {name}, 나이: {age}")
        case {"type": "animal", "species": species}:
            print(f"동물 종: {species}")
        case _:
            print("알 수 없는 데이터")

위 코드에서는 data{"type": "person", "name": name, "age": age} 형태인지, 아니면 {"type": "animal", "species": species} 형태인지에 따라 다른 동작을 수행합니다.

match 문 사용 예

다양한 경우에 사용할 수 있는데, 특히 조건이 복잡하거나 데이터 구조가 다양할 때 if문을 많이 쓰는 것보다 match 문이 훨씬 깔끔하고 효율적입니다.

data = {"type": "person", "name": "Alice", "age": 30}
process_data(data)

위의 경우 "이름: Alice, 나이: 30"이 출력됩니다.

 

반응형

+ Recent posts