About/Python

[Python] Python 3.10에서 새롭게 도입된 패턴 매칭 기능 (match-case)

김징어 2023. 11. 18. 13:50

파이썬 3.10 버전에서 소개된 중요한 새로운 기능 중 하나는 패턴 매칭입니다. 이 기능은 다양한 데이터 타입과 구조를 더 직관적이고 유연하게 처리할 수 있도록 해줍니다.

패턴 매칭이란?

패턴 매칭은 주어진 데이터 구조를 특정 패턴과 비교하여, 해당 패턴에 부합하는지 여부를 확인하는 프로세스입니다. 이 기능은 많은 함수형 프로그래밍 언어에서 일반적으로 사용되며, 파이썬 3.10에서는 match 문과 case 문을 통해 구현됩니다.

기본 구조

match 대상_변수:
    case 패턴1:
        # 패턴1과 일치할 때 실행되는 코드
    case 패턴2:
        # 패턴2와 일치할 때 실행되는 코드
    ...

 

사용 예시

아래 예시는 파이썬 3.10의 패턴 매칭 기능을 보여줍니다:

def greet(person):
    match person:
        case {"name": name, "age": age}:
            return f"안녕하세요, {name}님! 당신의 나이는 {age}세군요."
        case {"name": name}:
            return f"안녕하세요, {name}님! 나이는 알 수 없습니다."
        case _:
            return "안녕하세요, 게스트님!"

# 사용 예
print(greet({"name": "홍길동", "age": 30}))  # 안녕하세요, 홍길동님! 당신의 나이는 30세군요.
print(greet({"name": "이순신"}))            # 안녕하세요, 이순신님! 나이는 알 수 없습니다.
print(greet({}))                            # 안녕하세요, 게스트님!

 

이 예시에서는 딕셔너리 구조를 패턴 매칭을 통해 다루고 있습니다. match 문은 주어진 person 객체를 분석하고, 다양한 case 문에 따라 다른 결과를 반환합니다.

고려사항

  • 패턴 매칭 사용 시 주의점: 패턴 매칭은 매우 강력하지만, 복잡한 로직에서는 코드의 가독성을 해칠 수 있으므로 신중하게 사용해야 합니다.
  • 버전 호환성: 이 기능은 파이썬 3.10 이상 버전에서만 사용할 수 있습니다.

참고 문서

패턴 매칭에 대한 더 자세한 내용과 공식 문서는 아래 링크에서 확인할 수 있습니다: