Switch Case 문

PythonBeginner
지금 연습하기

소개

이 랩에서는 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 패턴, 반복 가능 객체의 길이, 기본 케이스를 위한 밑줄 기호, 그리고 내장 클래스에 대한 여러 예제를 실습했습니다.

이 랩이 즐거웠고 새로운 것을 배우셨기를 바랍니다!