파이썬 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)
  • 인기 글

  • 태그

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

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

티스토리툴바