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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- match와 case 기초
- 시퀀스와 매핑 매칭하기
- 클래스 패턴
- 가드와 와일드카드