PYTHON · 함수형
패턴 매칭 심화
Python 3.10+의 구조적 패턴 매칭(match/case)의 고급 패턴을 다룹니다.
함수형고급matchcase패턴 매칭structural
핵심 설명
Python 3.10+의 구조적 패턴 매칭(match/case)의 고급 패턴을 다룹니다.
Python code
from dataclasses import dataclass
@dataclass
class Point:
x: float
y: float
@dataclass
class Circle:
center: Point
radius: float
@dataclass
class Rect:
origin: Point
w: float
h: float
def describe(shape):
match shape:
case Circle(center=Point(0, 0), radius=r):
return f"원점 중심 원 (반지름={r})"
case Circle(radius=r) if r > 100:
return f"거대한 원 (반지름={r})"
case Circle(center=Point(x, y), radius=r):
return f"원 at ({x},{y}) r={r}"
case Rect(w=w, h=h) if w == h:
return f"정사각형 ({w}x{h})"
case Rect(origin=Point(x, y), w=w, h=h):
return f"직사각형 at ({x},{y}) {w}x{h}"
case _:
return "알 수 없는 도형"
shapes = [
Circle(Point(0, 0), 5),
Circle(Point(3, 4), 150),
Rect(Point(1, 1), 10, 10),
Rect(Point(0, 0), 5, 3),
]
for s in shapes:
print(f" {describe(s)}")학습 팁
패턴 매칭에서 가드 조건(if)을 사용하면 더 세밀한 조건 분기가 가능합니다.
주의할 점
패턴에서 변수명은 항상 새 바인딩을 생성합니다. 기존 변수와 비교하려면 case에 리터럴이나 가드를 사용하세요.
자주 묻는 질문
패턴 매칭 심화란 무엇인가요?
Python 3.10+의 구조적 패턴 매칭( match/case )의 고급 패턴을 다룹니다.
패턴 매칭 심화 학습 시 주의할 점은 무엇인가요?
패턴에서 변수명은 항상 새 바인딩을 생성합니다. 기존 변수와 비교하려면 case 에 리터럴이나 가드를 사용하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.