0Pricing
Python Academy · 강의

match와 case 기초

값 패턴에 따라 분기하기

match와 case 기초은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

구조적 패턴 일치

Python 3.10에서는 match 문을 사용한 구조적 패턴 일치가 도입되었습니다. 이 문은 값을 일련의 패턴과 비교하고 일치하는 첫 번째 패턴을 실행하며, 연결된 if/elif보다 훨씬 강력합니다.

기본 구문

대상 뒤에 match를 쓰고, 하나 이상의 case 절을 작성합니다. 처음 일치하는 절이 실행됩니다.

command = 'start'

match command:
    case 'start':
        print('Starting up')
    case 'stop':
        print('Shutting down')

# prints: Starting up

리터럴과 일치시키기

가장 간단한 패턴은 숫자, 문자열, True, False, None과 같은 리터럴 값입니다. 대상이 리터럴과 같을 때 일치합니다.

code = 404

match code:
    case 200:
        print('OK')
    case 404:
        print('Not Found')
    case 500:
        print('Server Error')

와일드카드 _

밑줄 _은 무엇이든 일치하는 와일드카드 패턴입니다. else처럼 모든 경우를 처리하는 기본 패턴으로 마지막에 배치합니다.

code = 418

match code:
    case 200:
        print('OK')
    case _:
        print('Unknown status')

OR로 결합하기

여러 패턴 중 하나와 일치시키려면 절 안에서 | 연산자를 사용합니다.

code = 301

match code:
    case 200 | 201 | 204:
        print('Success')
    case 301 | 302:
        print('Redirect')
    case _:
        print('Other')

값 캡처하기

패턴에서 이름만 단독으로 쓰면 대상이 해당 변수에 캡처됩니다. 모든 경우와 일치시켰지만 값을 계속 사용하고 싶을 때 사용합니다.

value = 42

match value:
    case 0:
        print('zero')
    case other:
        print('got', other)

순서가 중요합니다

절은 위에서 아래로 검사하며 첫 번째 일치가 선택됩니다. 너무 앞에 배치한 포괄적인 캡처 패턴은 뒤에 있는 더 구체적인 절을 가릴 수 있습니다.

x = 5

match x:
    case n:           # matches everything first!
        print('caught by capture')
    case 5:
        print('this never runs')

패턴 일치는 아무것도 반환하지 않음

match는 표현식이 아니라 문이므로 값을 반환하지 않습니다. 결과가 필요하면 각 절 안에서 변수에 값을 할당합니다.

day = 6
label = ''

match day:
    case 0 | 6:
        label = 'weekend'
    case _:
        label = 'weekday'

print(label)

None과 일치시키기

None과 직접 일치시킬 수 있습니다. 이는 조건문 연쇄 안에서 명시적으로 is None을 검사하는 것보다 깔끔합니다.

def describe(value):
    match value:
        case None:
            return 'nothing'
        case _:
            return 'something: ' + str(value)

print(describe(None))
print(describe(7))

실용적인 분배기

패턴 일치는 명령 분배기로 사용할 때 특히 유용하며, 긴 조건문 연쇄를 명확한 절의 표로 바꿔 줍니다.

def handle(cmd):
    match cmd:
        case 'help':
            return 'Showing help'
        case 'quit' | 'exit':
            return 'Goodbye'
        case _:
            return 'Unknown command'

print(handle('exit'))
print(handle('foo'))

True, False, None과 일치시키기

True, False, None 상수는 동등성이 아니라 동일성으로 일치합니다. 따라서 분기 기준으로 신뢰성 있게 사용할 수 있는 싱글턴입니다.

def report(flag):
    match flag:
        case True:
            return 'enabled'
        case False:
            return 'disabled'
        case None:
            return 'unset'

print(report(True))
print(report(None))

빠른 확인

패턴 일치 문에서 와일드카드 패턴 _은 어떤 동작을 하나요?

복습

값 패턴을 기준으로 분기하는 방법을 배웠습니다.

  • match는 절을 위에서 아래로 검사하며 첫 번째 일치가 선택됩니다.
  • 리터럴과 일치시키고, _을 모든 경우를 처리하는 패턴으로 사용하며, |로 결합합니다.
  • 이름만 단독으로 쓰면 값을 캡처합니다.
  • match는 표현식이 아니라 문입니다.

자주 묻는 질문

“match와 case 기초” 강의는 무료인가요?

네 — “match와 case 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“match와 case 기초”에서 뭘 배우나요?

값 패턴에 따라 분기하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“match와 case 기초” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. match와 case 기초
  2. 시퀀스와 매핑 매칭하기
  3. 클래스 패턴
  4. 가드와 와일드카드
← Python Academy(으)로 돌아가기