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 이상 버전에서만 사용할 수 있습니다.
참고 문서
패턴 매칭에 대한 더 자세한 내용과 공식 문서는 아래 링크에서 확인할 수 있습니다:
- Python 3.10 공식 문서 - Structural Pattern Matching
- PEP 634 - Structural Pattern Matching: Specification