match-case 문 소개 (Python 3.10+)
이 단계에서는 Python 3.10 에서 구조적 패턴 매칭 (structural pattern matching) 을 위해 도입된 기능인 match-case 문을 살펴봅니다. 이 기능은 특정 시나리오에서 긴 if-elif-else 체인에 대한 가독성 높은 대안을 제공합니다.
match-case 문은 값을 일련의 패턴과 비교하여 첫 번째 일치하는 패턴의 코드 블록을 실행합니다.
기본 구문은 다음과 같습니다:
match value:
case pattern1:
## pattern1 에 대한 코드
case pattern2:
## pattern2 에 대한 코드
case _:
## 일치하는 항목이 없을 때의 코드 (와일드카드)
WebIDE 에서 match_case.py 파일을 엽니다. 숫자를 기반으로 요일을 출력하는 다음 코드를 추가합니다.
day_number = 3
match day_number:
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday")
case 4:
print("Thursday")
case 5:
print("Friday")
case 6:
print("Saturday")
case 7:
print("Sunday")
case _:
print("Invalid day number")
print("Day check complete.")
파일을 저장하고 실행합니다. 이 환경의 python 명령어는 호환되는 버전으로 기본 설정됩니다.
python ~/project/match_case.py
출력 결과는 다음과 같습니다:
Wednesday
Day check complete.
값 3이 case 3:과 일치하므로 "Wednesday"가 출력됩니다.
이제 와일드카드 (wildcard) 사례를 테스트해 보겠습니다. match_case.py를 수정하여 유효하지 않은 숫자를 사용합니다:
day_number = 10
match day_number:
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday")
case 4:
print("Thursday")
case 5:
print("Friday")
case 6:
print("Saturday")
case 7:
print("Sunday")
case _:
print("Invalid day number")
print("Day check complete.")
스크립트를 저장하고 실행합니다:
python ~/project/match_case.py
출력 결과는 다음과 같습니다:
Invalid day number
Day check complete.
10이 특정 사례와 일치하지 않으므로 와일드카드 case _:가 일치합니다.
마지막으로, 검증을 준비하기 위해 match_case.py에서 day_number를 6으로 변경합니다:
day_number = 6
match day_number:
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday")
case 4:
print("Thursday")
case 5:
print("Friday")
case 6:
print("Saturday")
case 7:
print("Sunday")
case _:
print("Invalid day number")
print("Day check complete.")
파일을 저장하고 마지막으로 스크립트를 실행합니다:
python ~/project/match_case.py
출력 결과는 다음과 같습니다:
Saturday
Day check complete.
match-case 문은 긴 if-elif-else 체인과 비교하여 여러 특정 값을 처리하는 더 깔끔한 방법이 될 수 있습니다.