소개
이 랩에서는 Python 3.10 에 도입된 새로운 Python Switch Case 문, 즉 구조적 패턴 매칭 (Structural Pattern Matching) 을 사용하는 방법을 배웁니다. Switch Case 문은 기존의 if-elif-else 문에 비해 더 쉽고 읽기 쉬운 방식으로 패턴을 매칭할 수 있게 해줍니다.
성과
- Switch Case 문
- if 문
Python if 문과의 비교
Python Switch Case 문의 예제를 살펴보기 전에, 기존의 if-elif-else 문과 비교해 보겠습니다.
다음 HTTP 응답 코드를 매칭하는 예제를 고려해 보세요:
response_code = 200
if response_code == 200:
print("OK")
elif response_code == 404:
print("404 Not Found")
elif response_code == 500:
print("Internal Server Error")
Python Switch Case 문을 사용하여 동일한 예제를 다음과 같이 다시 작성할 수 있습니다:
response_code = 201
match response_code:
case 200:
print("OK")
case 404:
print("404 Not Found")
case 500:
print("Internal Server Error")
보시다시피, Python Switch Case 문은 if-elif-else 문에 비해 더 간결하고 읽기 쉽습니다.
다음은 switch case 문의 구문입니다:
match term:
case pattern-1:
action-1
case pattern-2:
action-2
case pattern-3:
action-3
case _:
action-default
term은 패턴과 일치시키려는 값입니다. 패턴은 단일 값, 튜플, 리스트, 내장 클래스 또는 or 연산자 (|) 를 사용하여 이들을 조합한 것일 수 있습니다. _는 모든 값과 일치하는 catch-all 패턴입니다.
or 패턴 매칭
이 예제에서 파이프 문자 (| 또는 or) 를 사용하면 Python 이 두 개 이상의 경우에 대해 동일한 응답을 반환할 수 있습니다.
response_code = 502
match response_code:
case 200 | 201:
print("OK")
case 500 | 502:
print("Internal Server Error")
response_code가 500 또는 502 이므로 "Internal Server Error"가 출력됩니다.
기본 케이스를 정의하기 위해 밑줄 기호 _를 사용할 수 있습니다. 다음 예제를 고려해 보세요:
response_code = 800
match response_code:
case 200 or 201:
print("OK")
case 500 or 502:
print("Internal Server Error")
case _:
print("Invalid Code")
이 예제에서는 response_code의 값이 어떤 케이스에도 해당하지 않으므로 "Invalid Code"가 출력됩니다.
내장 클래스 매칭
내장 클래스를 기반으로 패턴을 매칭할 수도 있습니다. 다음 예제를 고려해 보세요:
response_code = ["300"]
match response_code:
case int():
print('response_code is a number')
case str():
print('response_code is a string')
case list():
print('response_code is a list')
case _:
print('response_code is a unknown type')
response_code가 리스트이므로 "response_code is a list"가 출력됩니다.
요약
이 랩에서는 Python 3.10 에 도입된 Python Switch Case 문을 사용하는 방법을 배웠습니다. 전통적인 if-elif-else 문과 비교하고, 단일 값 매칭, or 패턴, 반복 가능 객체의 길이, 기본 케이스를 위한 밑줄 기호, 그리고 내장 클래스에 대한 여러 예제를 실습했습니다.
이 랩이 즐거웠고 새로운 것을 배우셨기를 바랍니다!



