728x90
반응형
- t-문자열(t-strings) 은 Python 3.14에서 새롭게 도입될 안전하고 유연한 문자열 처리 기능임
- 기존 f-string과 달리, t-string은 문자열이 아닌 Template 객체로 반환되어 자동 출력 없이 안전한 처리 가능
- t-string은 HTML, SQL 등 동적 입력을 안전하게 이스케이프할 수 있는 구조를 갖고 있음
- JavaScript의 **태그 템플릿(tagged templates)**과 유사한 개념으로, 다양한 변환 및 처리 확장이 가능함
- Python 개발 도구 생태계가 이 기능을 잘 지원한다면, 웹/보안 중심의 문자열 처리 방식에 큰 변화를 줄 수 있음
Python의 새 기능: t-문자열(Template Strings)
- Python 3.14부터 t"..." 문법으로 사용하는 Template 문자열(t-strings) 이 공식 기능으로 도입됨
- 기존 f-string과 달리, t-string은 즉시 문자열이 아닌 string.templatelib.Template 객체로 평가됨
- 이 객체는 출력 전 별도의 가공 과정이 필요하며, 이 과정을 통해 동적 값의 안전한 처리 및 변환 가능
왜 f-string이 위험할 수 있는가?
- f-string은 즉시 문자열로 평가되기 때문에, 사용자 입력을 포함한 코드에서 SQL Injection이나 XSS 발생 가능
- 예: f"{user_input}" → 공격 코드가 직접 삽입될 수 있음
- t-string은 이러한 평가를 지연시켜 명시적으로 가공해야만 사용 가능하게 함
t-string의 예시 사용
- HTML 이스케이프 처리 예시:
evil = "<script>alert('bad')</script>" template = t"{evil}" safe = html(template) # safe는 "<script>alert('bad')</script>"
- 속성 자동 삽입 등 더 복잡한 처리도 가능:
attributes = {"src": "roquefort.jpg", "alt": "Yum"} template = t"<img {attributes} />" element = html(template) # 결과: ""
구조와 API
- Template 객체는 .strings, .values 속성을 통해 원본 텍스트와 대입값을 분리해 제공
- interpolations 속성을 통해 !s, :>8 등 포맷 세부 정보까지 접근 가능
- 순회(iteration)를 통해 텍스트와 값이 섞인 상태도 직접 가공 가능
- 수동 생성도 가능:
from string.templatelib import Template, Interpolation template = Template( "Hello ", Interpolation(value="World", expression="name"), "!" )
- 재미있는 예시: 돼지 라틴어 변환기
- Template 객체의 내용을 순회하며 단어를 **Pig Latin**으로 변환하는 예제:
def pig\_latin(template: Template) -> str:
...
name = "world"
template = t"Hello {name}!"
assert pig\_latin(template) == "Hello orldway!"
향후 발전 방향
- t-strings는 웹/보안 중심의 문자열 처리 방식에 안전성과 확장성을 가져올 수 있음
- black, ruff, VS Code 등 개발 도구가 t-string 포맷/하이라이팅을 지원하길 기대
- JavaScript 개발자가 익숙한 tagged template 방식과 유사해, 여러 프레임워크에서도 활용 가능성 높음
개발자 커뮤니티와의 협업
- 본 기능은 다양한 Python 커뮤니티 멤버들의 참여와 협업을 통해 완성됨
- 특히 Jim, Paul, Koudai, Lysandros, 그리고 Guido 등 핵심 인물들과의 교류가 언급됨
- PEP 750과 그 예제 저장소는 GitHub에서 확인 가능
References
- https://news.hada.io/topic?id=20463
Python의 새로운 `t-strings` | GeekNews
t-문자열(t-strings) 은 Python 3.14에서 새롭게 도입될 안전하고 유연한 문자열 처리 기능임기존 f-string과 달리, t-string은 문자열이 아닌 Template 객체로 반환되어 자동 출력 없이 안전한 처리 가능t-strin
news.hada.io
반응형
'Python' 카테고리의 다른 글
PDF table-extraction (표 추출) 실험 (with pdfplumber, camelot, tabula-py) (2) | 2024.07.22 |
---|---|
파이썬에서 더 빠른 JSON serialization 사용하기 (0) | 2024.01.22 |
python psutil을 사용해서 간단한 모니터링 스크립트 구축하기 (0) | 2024.01.02 |
Python gc 튜닝을 통한 성능 개선 (Flask 기반 예시 코드) (0) | 2023.10.14 |
pip-audit과 GitHub Actions를 활용한 취약 라이브러리 탐지 파이프라인 구축하기 (0) | 2023.10.09 |