Python 3.10의 구조 패턴 매칭
match는 다른 언어의 단순한 switch보다 넓어. 값뿐 아니라 시퀀스의 길이와 자리, 딕셔너리의 키, 객체의 필드를 한 번에 확인하고 필요한 부분을 이름에 담을 수 있어.
리터럴, 와일드카드, 캡처
숫자나 문자열 리터럴은 같은 값과 맞고, _는 나머지 모든 경우를 받아. 반면 case name:의 맨 이름은 상수 비교가 아니라 어떤 값이든 받아 name에 묶는 캡처야. 상수를 비교하려면 Status.ACTIVE처럼 점이 있는 이름을 써.
모양을 풀고 조건을 더한다
시퀀스 패턴은 위치를, 매핑 패턴은 필요한 키를, 클래스 패턴은 공개된 속성을 풀어 받아. if 가드는 모양이 맞은 뒤 추가 조건을 검사해. 모든 분기를 match로 바꾸지 말고, 한 데이터의 여러 구조를 분해할 때 써.
원칙: 분기의 기준이 “무슨 값인가”보다 “어떤 모양인가”에 가까울수록 match가 빛나.