0Pricing
Python Academy · 강의

가드와 와일드카드

조건과 모든 경우를 처리하는 패턴 추가하기

가드와 와일드카드은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

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