🗄️ 데이터센터
home
주식거래 데이터
home
🎛️

새로운 문법 case

Case문이란?

파이썬의 match-case 문법은 Python 3.10 버전부터 새롭게 도입된 조건 분기 방법으로, 기존의 if-elif-else 구조를 더욱 간결하고 직관적으로 작성할 수 있도록 설계되었습니다. 이 문법은 특정 값(변수나 표현식 등)을 기반으로 여러 가지 경우(케이스) 중 어느 하나와 일치하는지를 판단한 후, 그에 알맞은 코드를 실행하는 방식으로 작동합니다.

기본 문법 구조

1.
match 키워드: 조건 분기의 기준이 되는 값(숫자, 문자열, 리스트 등)을 명시합니다. 이 값을 통해 이후의 case들이 어떤 패턴 혹은 값과 일치하는지 판단하게 됩니다.
2.
case 키워드: 실제로 일치 여부를 확인하는 부분입니다. 예를 들어, case 1: 은 기준값이 1과 같을 때 해당 블록이 실행된다는 것을 의미합니다. 만약 기준값이 여러 형태를 가질 수 있다면, case에서 다양한 패턴을 지정해줄 수도 있습니다.
3.
_ (언더스코어) 사용: 만약 위에 제시한 case들 중 어떤 것도 일치하지 않는다면, _ 기호를 통해 "기본값" 역할을 설정할 수 있습니다. 즉, case _:는 그 어떠한 조건에도 부합하지 않을 때 실행되는 '최종 선택지'라고 할 수 있습니다.
match subject: case pattern1: # 패턴1이 일치할 때 실행할 코드 case pattern2: # 패턴2가 일치할 때 실행할 코드 case _: # 어떤 패턴도 일치하지 않을 때 실행할 코드
Python
복사
match 문은 값을 여러 패턴과 비교해서 맞는 패턴을 찾으면 그에 해당하는 코드를 실행합니다. case _ 는 위의 모든 패턴이 맞지 않을 때 실행되는 기본 동작입니다.

패턴 매칭의 특징

숫자나 문자열 같은 일반적인 값을 비교할 때 사용
match value: case 1: print("숫자 1입니다") case "hello": print("안녕하세요") case _: print("기타 값입니다")
Python
복사
리스트나 튜플의 내용을 순서대로 확인하고 싶을 때 사용 (예: [1, 2, 3] 형태)
match points: case [x, y]: print(f"2차원 좌표: ({x}, {y})") case [x, y, z]: print(f"3차원 좌표: ({x}, {y}, {z})") case _: print("알 수 없는 좌표")
Python
복사
딕셔너리의 키와 값을 확인할 때 사용 (예: {"name": "Kim", "age": 25} 형태)
match person: case {"name": str(name), "age": int(age)}: print(f"{name}님은 {age}세입니다") case _: print("올바른 사용자 정보가 아닙니다")
Python
복사
여러 조건 중 하나라도 맞으면 실행하고 싶을 때 | 기호로 연결해서 사용
match status: case "SUCCESS" | "OK": print("작업이 성공했습니다") case "ERROR" | "FAIL": print("작업이 실패했습니다")
Python
복사
추가로 if문을 붙여서 더 자세한 조건을 설정하고 싶을 때 사용
match age: case n if n < 20: print("미성년자입니다") case n if 20 <= n < 65: print("성인입니다") case _: print("노인입니다")
Python
복사

if문과의 차이점

case문은 if-elif-else 구문으로도 구현할 수 있지만, 더 간결하고 가독성이 좋은 코드를 작성할 수 있습니다. 다음은 같은 기능을 하는 코드를 두 가지 방식으로 작성한 예시입니다

1. 단순 값 비교

# if문 사용 x = 2 if x == 1: print("일") elif x == 2: print("이") elif x == 3: print("삼") else: print("다른 숫자") # case문 사용 x = 2 match x: case 1: print("일") case 2: print("이") case 3: print("삼") case _: print("다른 숫자")
Python
복사

2. 복잡한 데이터 구조 처리

# if문 사용 x = [1, 2] # 리스트 데이터 if len(x) == 2: a, b = x print(f"2차원 좌표: ({a}, {b})") elif len(x) == 3: a, b, c = x print(f"3차원 좌표: ({a}, {b}, {c})") else: print("알 수 없는 데이터") # case문 사용 x = [1, 2] # 리스트 데이터 match x: case [a, b]: print(f"2차원 좌표: ({a}, {b})") case [a, b, c]: print(f"3차원 좌표: ({a}, {b}, {c})") case _: print("알 수 없는 데이터")
Python
복사

case문의 장점

더 간결하고 읽기 쉬운 코드 작성 가능- 여러 줄의 if-elif 구문을 간단한 match-case 구문으로 대체할 수 있어 코드의 길이가 줄어듭니다.- 들여쓰기가 단순해져서 코드의 구조를 한눈에 파악하기 쉽습니다.
복잡한 데이터 구조를 쉽게 분해하고 처리 가능- 리스트, 튜플, 딕셔너리 등의 데이터를 자동으로 분해하여 변수에 할당할 수 있습니다.- 중첩된 데이터 구조도 한 번의 패턴 매칭으로 처리할 수 있습니다.
패턴 매칭을 통한 데이터 유효성 검사가 더 직관적- 데이터의 구조와 타입을 패턴으로 명시하여 쉽게 검증할 수 있습니다.- 잘못된 데이터 형식을 바로 감지하고 처리할 수 있습니다.
여러 조건을 |로 묶어서 간단히 표현 가능- OR 조건을 | 기호 하나로 간단히 표현할 수 있습니다.- 여러 개의 if 문이나 elif 문을 하나의 case로 통합할 수 있어 코드가 깔끔해집니다.

if문의 장점

파이썬의 모든 버전에서 사용 가능case문은 Python 3.10 이상의 버전이 필요한 반면, if문은 파이썬의 모든 버전에서 사용할 수 있어 코드의 호환성이 더 높습니다.
더 복잡한 조건식을 자유롭게 사용 가능if문에서는 and, or, not 등의 논리 연산자와 함께 산술 연산, 함수 호출, 메서드 체이닝 등 다양한 표현식을 조건으로 사용할 수 있습니다. 반면 case문은 패턴 매칭에 초점이 맞춰져 있어 일부 복잡한 조건식을 표현하기 어려울 수 있습니다.
프로그래머에게 더 친숙한 문법if문은 대부분의 프로그래밍 언어에서 기본적으로 제공하는 제어문이므로, 프로그래머들이 직관적으로 이해하고 사용할 수 있습니다. 특히 파이썬을 처음 배우는 개발자나 다른 언어에서 넘어온 개발자들에게 더 익숙한 문법입니다.

위에서 학습한거 연습해야죠?

# 사용자 선택지 안내 print("모험을 시작합니다!") print("1: 성으로 간다 🏰") print("2: 숲으로 간다 🌲") print("3: 산으로 간다 ⛰️") # 사용자 입력 받기 선택 = input("어디로 갈까요? (숫자를 입력하세요): ") # match-case를 사용한 조건 분기 match 선택: case "1": print("🏰 당신은 성으로 들어갔습니다. 보물이 있습니다!") case "2": print("🌲 당신은 숲으로 갔습니다. 늑대를 만났습니다!") case "3": print("⛰️ 당신은 산으로 갔습니다. 정상에서 멋진 풍경을 봅니다!") case _: print("❓ 선택지가 잘못되었습니다. 게임 종료.")
Python
복사
연습한거 스레드에 답글이나 피드에 남겨주시면 참 좋겠네요!!!
궁금하거나 모르는 부분이 있다면 스레드에 답글을 남겨주세요! 어떤 페이지의 어떤 내용이 궁금한지 구체적으로 알려주시면 더욱 좋습니다. 내용에 대한 응원 메시지도 환영해요!