Python 3.14: The NEW T-strings are Awesome
- Python 3.14에서 도입된 T-string은 기존의 f-string,
string.format, string.Template 방식과 달리 템플릿 구조를 유지하는 새로운 문자열 처리 방식입니다. 🐍
- f-string은 간결하고 표현식 삽입이 가능하지만, 평가 후에는 일반 문자열이 되어 구조 정보가 사라지고 보안 및 재사용성이 낮습니다. 💨
string.format은 이전 Python 버전에서도 작동하며 유연한 인자 전달이 가능하지만, 코드가 장황해지고 역시 구조 정보가 유지되지 않습니다. 📜
string.Template (기존 string 모듈)는 코드 실행 없이 단순 치환만 허용하여 사용자 제공 템플릿에 안전하지만, 문법이 번거롭고 최종적으로는 일반 문자열로 변환됩니다. 🛡️
- T-string은 f-string과 유사하게
T 접두사를 사용하지만, 일반 문자열 대신 리터럴 부분과 보간된 표현식 및 메타데이터를 모두 보존하는 '템플릿 객체'를 생성합니다. 🧠
- T-string 템플릿 객체는
template.strings, template.interpolations, template.values를 통해 원본 문자열 부분, 플레이스홀더 정보, 평가된 값을 각각 검사할 수 있습니다. 🔍
- T-string의 핵심 장점은 평가 후에도 구조가 손실되지 않아 플레이스홀더 주변 번역, HTML/SQL/URL 값 이스케이프 및 위생 처리, 데이터와 템플릿 분리 로깅, 렌더링 지연 등이 가능하다는 점입니다. ✨
- T-string에서 최종 문자열을 생성하려면 템플릿 객체를 이터레이터로 사용하여 각 부분을 수동으로 결합해야 하며,
string.template.convert와 format 함수를 통해 서식 지정도 적용할 수 있습니다. 🛠️
- 특히, T-string은 보간된 구성 요소에만 변환을 적용하는 처리 함수(예:
urllib.parse.quote 또는 html.escape)를 빌더에 전달하여 SQL/HTML 주입 공격을 방지하는 등 안전한 사용자 입력 처리에 매우 유용합니다. 🔒
string.Template와 T-string이 사용하는 string.template.Template는 이름이 유사하여 혼동하기 쉬우며, 후자는 유효성 검사, 입력 위생 처리, 변환 등 더 복잡한 용도로 사용됩니다. 📛