parse_qs max_num_fields: 같은 키가 반복돼도 필드 수를 셉니다

쿼리 “tag=a&tag=b&tag=c”는 고유 키가 tag 하나여도 입력 필드는 세 개입니다. Python parse_qs의 max_num_fields는 고유 키 개수와 다르게 읽어야 합니다.
1. 기본값과 상한 지정 구분
Python 3.12 공식 문서는 max_num_fields의 기본값이 None이며 지정한 값보다 필드가 많으면 ValueError를 발생시킨다고 설명합니다. 해당 인수는 Python 3.8에서 추가됐습니다. 사용하는 런타임 버전을 먼저 확인하세요.
링크를 만드는 서비스에서 같은 태그 키를 여러 번 사용하는 형식은 흔합니다. 고유 키가 한 개라는 이유만으로 입력량도 하나라고 계산하면 제한을 잘못 이해하게 됩니다.
2. 반복 키 예제를 직접 비교

직접 실행한 예제에서 parse_qs("tag=a&tag=b&tag=c", max_num_fields=2)는 ValueError가 났고, 상한 3에서는 {"tag": ["a", "b", "c"]}를 반환했습니다. 파싱 결과의 딕셔너리 키 수와 읽은 필드 수를 따로 비교한 결과입니다.
| 설정 | 예제 결과 | 의미 |
|---|---|---|
| max_num_fields=2 | ValueError | 필드 3개가 상한 초과 |
| max_num_fields=3 | tag 값 목록 3개 | 상한 안에서 파싱 |
| 기본 None | 인수에서 상한을 주지 않음 | 별도 입력 정책을 정해야 함 |
3. 오류 처리와 값 검증을 분리
상한 숫자는 서비스가 허용하는 입력 구조에 맞춰 정합니다. 이 인수 하나로 URL 전체의 안전성이나 값의 유효성이 보장되지는 않습니다. 예상한 키와 값 형식, 전체 요청 크기 같은 조건도 각자의 처리 단계에서 확인하세요.
| 처리 메모 | 확인 질문 |
|---|---|
| 파싱 | 반복 키를 허용하는가 |
| 예외 | ValueError를 사용자에게 어떻게 알리는가 |
| 값 검증 | 허용 키와 값의 형식이 맞는가 |
4. 자주 묻는 질문
같은 키를 세 번 쓰면 한 필드인가요?
이 예제는 세 개의 입력 필드입니다. 결과가 한 키의 목록으로 합쳐지는 것과 구분하세요.
기본으로 필드 상한이 정해져 있나요?
공식 문서의 기본값은 None입니다. 필요한 상한은 서비스 조건에 맞춰 명시적으로 지정합니다.
Python parse_qs 공식 인수 설명 읽기(영문)
공식 자료 확인일 2026년 10월 15일: Python parse_qs 공식 인수 설명 읽기(영문).
대표 삽화는 AI로 제작했으며 본문 설명 도표는 직접 구성했습니다.