파이썬 match-case 문

2023. 4. 3. 10:11·파이썬/Basic
반응형
파이썬 3.10부터 match-case문이 도입되었습니다. match-case문은 switch-case문과 유사한 기능을 합니다. 하지만 switch-case문과는 몇 가지 차이점이 있습니다.

1. 패턴 매칭

match-case문은 패턴 매칭을 지원합니다. 이는 일련의 조건문을 작성하는 대신 하나의 match문 안에서 여러 패턴을 정의하여 코드를 간결하게 작성할 수 있습니다.

예를 들어, 다음과 같은 리스트가 있다고 가정합니다.

fruits = ['apple', 'banana', 'orange']

이 리스트의 각 항목에 대해 다른 동작을 수행하려면 switch-case문을 다음과 같이 작성할 수 있습니다.

for fruit in fruits:
    switch(fruit):
        case 'apple':
            print('This is an apple')
            break
        case 'banana':
            print('This is a banana')
            break
        case 'orange':
            print('This is an orange')
            break

하지만 match-case문을 사용하면 다음과 같이 간단하게 작성할 수 있습니다.

for fruit in fruits:
    match fruit:
        case 'apple':
            print('This is an apple')
        case 'banana':
            print('This is a banana')
        case 'orange':
            print('This is an orange')


2. 유연한 패턴

match-case문은 switch-case문과 달리 패턴 매칭을 사용하여 더 유연하게 코드를 작성할 수 있습니다. 예를 들어, 다음과 같은 코드를 작성해보겠습니다.

def check_type(x):
    match x:
        case int:
            print('This is an integer')
        case str:
            print('This is a string')
        case list:
            print('This is a list')
        case _:
            print('Unknown type')

check_type(10)
check_type('hello')
check_type([1, 2, 3])
check_type(3.14)

위 코드에서는 입력된 값의 타입에 따라 다른 메시지를 출력합니다. match문에서 _(언더스코어)는 모든 값에 대해 일치하는 패턴입니다. 따라서 입력된 값이 int, str, list 중 어느 타입에도 해당하지 않는 경우, _ 패턴이 일치하게 되어 'Unknown type' 메시지가 출력됩니다.


3. 패턴 중첩

match-case문은 패턴을 중첩하여 사용할 수 있습니다. 이는 더욱 복잡한 패턴 매칭을 가능하게 합니다.

예를 들어, 다음과 같은 코드를 작성해보겠습니다.

def check_value(x):
    match x:
        case [1, 2, 3]:
            print('This is [1, 2, 3]')
        case [1, _, 3]:
            print('This is a list with 1 and 3')
        case [1, _, _]:
            print('This is a list with 1 and two more items')
        case _:
            print('Unknown value')

check_value([1, 2, 3])
check_value([1, 4, 3])
check_value([1, 2, 3, 4])
check_value('hello')

위 코드에서는 입력된 값이 어떤 패턴과 일치하는지에 따라 다른 메시지를 출력합니다. [1, 2, 3] 패턴과 일치하는 경우 'This is [1, 2, 3]' 메시지가 출력됩니다. [1, _, 3] 패턴과 일치하는 경우 'This is a list with 1 and 3' 메시지가 출력됩니다. [1, _, _] 패턴과 일치하는 경우 'This is a list with 1 and two more items' 메시지가 출력됩니다. 어떤 패턴에도 일치하지 않는 경우, _ 패턴이 일치하게 되어 'Unknown value' 메시지가 출력됩니다.


결론

이상으로 파이썬 match-case문과 switch-case문의 차이점에 대해 알아보았습니다. match-case문은 switch-case문과 유사한 기능을 하지만, 패턴 매칭, 유연한 패턴, 패턴 중첩 등의 장점이 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Basic' 카테고리의 다른 글

파이썬에서 알아두면 유용한 기능들  (0) 2023.06.24
파이썬에서 람다식(Lambda Expression) 사용하기  (0) 2023.04.04
파이썬의 자료형  (0) 2023.04.02
파이썬 모듈 : Random 랜덤  (0) 2023.03.23
파이썬 Numpy 모듈  (0) 2023.03.22
'파이썬/Basic' 카테고리의 다른 글
  • 파이썬에서 알아두면 유용한 기능들
  • 파이썬에서 람다식(Lambda Expression) 사용하기
  • 파이썬의 자료형
  • 파이썬 모듈 : Random 랜덤
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    appdevelopment
    스크립트 실행
    쇼핑몰리뷰
    카페24리뷰
    리스트
    learntocode
    파이썬
    Python
    devlife
    리뷰관리
    스마트스토어리뷰
    카페24리뷰이관
    상품 리뷰 크롤링
    셀레니움
    유니티
    list
    라떼우유
    unity
    cv2
    C#
    codingtips
    codingcommunity
    긴유통기한우유
    ipcamera
    리뷰이관
    믈레코비타멸균우유
    스크립트 실행 순서
    programming101
    rtsp
    programmerlife
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
파이썬 match-case 문
상단으로

티스토리툴바