가드와 와일드카드
조건과 모든 경우를 처리하는 패턴 추가하기
가드와 와일드카드은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
일치 결과 다듬기
구조적 패턴만으로는 충분하지 않고 조건도 필요한 경우가 있습니다. 가드는 절에 if 검사를 추가하고, 와일드카드는 유연하게 모든 경우를 처리합니다.
가드 추가하기
패턴 뒤에 if <condition>을 작성합니다. 패턴이 일치하고 동시에 가드가 참일 때만 절이 일치합니다.
n = 7
match n:
case x if x < 0:
print('negative')
case x if x == 0:
print('zero')
case x if x > 0:
print('positive')가드는 캡처한 이름을 사용함
가드에서는 패턴으로 연결한 변수를 참조할 수 있습니다. 여기서는 캡처한 쌍이 같은지 검사합니다.
point = [3, 3]
match point:
case [x, y] if x == y:
print('on the diagonal')
case [x, y]:
print('off the diagonal')가드가 실패하면
구조는 일치하지만 가드가 거짓이면 일치 검사가 중단되지 않고 다음 절로 계속됩니다.
value = 5
match value:
case n if n > 100:
print('big')
case n:
print('fell through to here:', n)클래스 패턴과 가드
가드는 클래스 패턴을 포함한 모든 패턴 형식과 결합하여 객체 속성에 대한 정확한 조건을 지정할 수 있습니다.
from dataclasses import dataclass
@dataclass
class Order:
total: float
def discount(order):
match order:
case Order(total=t) if t > 100:
return 'free shipping'
case Order():
return 'standard shipping'
print(discount(Order(150)))
print(discount(Order(50)))와일드카드 복습
단독으로 사용한 밑줄 _은 무엇과든 일치하지만 아무것도 연결하지 않습니다. 마지막 절에 배치하면 앞에서 처리되지 않은 모든 경우를 처리합니다.
x = 'unexpected'
match x:
case 'a':
print('letter a')
case _:
print('catch-all')캡처와 와일드카드 비교
이름을 지정한 캡처도 무엇과든 일치하지만 값을 보존하는 반면, _은 값을 버립니다. 본문에서 값이 필요하면 이름을 사용합니다.
value = 42
match value:
case 0:
print('zero')
case other: # capture: keeps the value
print('value was', other)패턴 내부의 와일드카드
관심 없는 부분을 무시하기 위해 더 큰 패턴 안에 밑줄을 넣을 수 있습니다.
record = ('user', 42, 'ignore_me')
match record:
case ('user', user_id, _):
print('user id:', user_id)OR, 가드, 와일드카드 결합하기
이 기능들은 함께 구성할 수 있습니다. OR 패턴 다음에 가드를 배치하고 마지막에 와일드카드를 두면 표현력 있는 분류기를 만들 수 있습니다.
def classify(n):
match n:
case 0 | 1:
return 'binary digit'
case x if x % 2 == 0:
return 'even'
case _:
return 'odd'
print(classify(0))
print(classify(4))
print(classify(7))완전성
일부 언어와 달리 Python은 모든 경우를 처리하도록 match를 강제하지 않습니다. 일치하는 절이 없으면 문은 아무 동작도 하지 않습니다. 항상 한 분기가 실행되도록 하려면 마지막에 case _를 추가합니다.
color = 'purple'
result = 'no match'
match color:
case 'red':
result = 'stop'
case 'green':
result = 'go'
print(result)구조 분해한 데이터에 가드 적용하기
가드는 시퀀스 패턴 및 매핑 패턴과 자연스럽게 결합되므로, 방금 꺼낸 값을 검사할 수 있습니다.
data = [10, 20]
match data:
case [a, b] if a + b > 25:
print('sum is large')
case [a, b]:
print('sum is small')빠른 확인
패턴의 구조는 일치하지만 가드 조건이 거짓이면 어떻게 되나요?
복습
조건과 모든 경우를 처리하는 절을 추가하는 방법을 배웠습니다.
- 가드는 캡처한 이름을 사용할 수 있는
if검사를 추가합니다. - 가드가 실패하면 다음 절로 넘어갑니다.
_은 일치한 값을 버리고, 이름은 값을 캡처합니다.- 항상 실행될 분기를 만들려면 마지막에
case _를 추가합니다.
자주 묻는 질문
“가드와 와일드카드” 강의는 무료인가요?
네 — “가드와 와일드카드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“가드와 와일드카드”에서 뭘 배우나요?
조건과 모든 경우를 처리하는 패턴 추가하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“가드와 와일드카드” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- match와 case 기초
- 시퀀스와 매핑 매칭하기
- 클래스 패턴
- 가드와 와일드카드