파이썬은 1991년에 처음 등장한 이후 매년 두 번 정도 꾸준히 업데이트되며 새로운 기능을 추가하고 있습니다.
2025년 10월에 나올 Python 3.14에서는 꽤 흥미로운 기능이 추가되는데요.
바로 템플릿 문자열(Template String, 줄여서 t-string) 입니다.
"아니, 파이썬에 이미 f-string이 있는데 왜 또 문자열 기능이?"
오늘은 이 질문에 답하면서, t-string이 무엇인지, 왜 생겼는지, 어떻게 쓰는지까지 다뤄보겠습니다.
왜 t-string이 생겼을까?
파이썬의 새 기능은 PEP 750에서 처음 제안되었습니다.
파이썬 커뮤니티 누구나 아이디어를 제안하고 토론할 수 있는 문서입니다.
핵심 아이디어는 이렇습니다:
- f-string은 {변수} 자리에 값이 즉시 들어갑니다.
- t-string은 {변수} 자리에 값이 들어가기 전, “잠깐 멈춰서” 가공·검증할 기회를 줍니다.
즉, 최종 문자열로 변환되기 전에 중간 단계에서 값을 안전하게 다루고, 가공할 수 있는 구조를 만든 거죠.
기존 문자열 포매팅 방식 복습
파이썬에서 문자열에 변수를 넣는 대표적인 방법은 세 가지가 있습니다.
% 포매팅 (옛날 방식)
name = "민호"
age = 25
print("이름: {}, 나이: {}".format(name, age))
장점: 단순, C언어 스타일에 익숙한 사람은 친근함.
단점: %s, %d처럼 자료형을 명시해야 함.
str.format() 방식
name = "민호"
age = 25
print("이름: {}, 나이: {}".format(name, age))
장점: 자료형 지정 없이 가능.
단점: f-string보다 코드가 길고, 속도도 조금 느림.
f-string (Python 3.6+)
name = "민호"
age = 25
print(f"이름: {name}, 내년 나이: {age + 1}")
장점: 짧고 가독성 좋음, 중괄호 안에 바로 계산식·함수 호출 가능.
단점: 즉시 평가되기 때문에, 보안 필터링 없이 그대로 출력될 수 있음.
f-string의 한계
다음은 SQL 쿼리를 만들 때 f-string을 잘못 사용한 사례입니다.
user_name = "' OR 1=1 --"
query = f"SELECT * FROM users WHERE name = '{user_name}'"
print(query)
// 출력 결과:
// SELECT * FROM users WHERE name = '' OR 1=1 --'
이렇게 되면 조건이 항상 참(OR 1=1)이 되어 데이터베이스 전체가 노출될 수 있습니다.
이런 공격을 SQL 인젝션이라고 부릅니다.
t-string 문법과 기본 사용법
t-string은 f-string과 비슷하지만, 즉시 문자열로 변환되지 않고 Template 타입으로 남습니다.
따라서 값을 바로 출력하지 않고, 먼저 가공할 수 있습니다.
현재(2025년 8월) 파이썬 3.14 정식 버전이 아니므로, 아래 예시는 개념을 보여주기 위한 시뮬레이션 코드입니다.
t-string 예시 (가상 시뮬레이션)
from string import Template
# t-string 예시 (가상 시뮬레이션)
template = Template("Hello ${name}, welcome!")
result = template.substitute(name="민호")
print(result)
결과
Hello 민호, welcome!
보간(Interpolation)과 가공 예시
from string import Template
def escape_html(value):
return value.replace("<", "<").replace(">", ">")
template = Template("<p>${user_input}</p>")
safe_html = template.substitute(user_input=escape_html("<script>alert('XSS');</script>"))
print(safe_html)
결과
<p><script>alert('XSS');</script></p>
여기서 핵심은, t-string이라면 이런 가공 단계를 강제로 거칠 수 있다는 점입니다.
t-string의 특징
지연 평가(Lazy Evaluation)
f-string: 즉시 평가 → 보안 취약점 발생 가능성
t-string: 가공 단계 후 최종 문자열 생성
타입
t-string은 str이 아니라 Template 타입
따라서 직접 str()로 변환하거나, .substitute() 같은 메서드 사용
안전성
HTML, SQL 등에서 안전한 값만 최종적으로 들어가게 필터링 가능
장점과 단점
장점 | 단점 |
보안 필터링, 데이터 검증이 쉬움 | 사용법이 f-string보다 복잡 |
문자열 처리 로직을 재활용하기 좋음 | 최종 문자열을 얻으려면 별도 렌더링 필요 |
서식 문자열 기능을 계승 | IDE 자동완성, 타입 검사 지원이 제한적 |
마무리
f-string이 빠르고 편한 즉시 평가 방식이었다면,
t-string은 안전하고 유연한 지연 평가 방식입니다.
SQL 인젝션, XSS 같은 보안 이슈가 있는 환경이나,
문자열 가공이 잦은 도메인(HTML, Markdown, 템플릿 엔진)에서는 큰 장점이 될 수 있습니다.
'For 전공, 전문가 > IT' 카테고리의 다른 글
[보안] Jenkins Git Parameter Plugin 보안 대참사 - 혹시 당신 회사도? (3) | 2025.08.14 |
---|---|
"코딩테스트에서 ChatGPT 써도 됩니다" 라고 ? (7) | 2025.08.04 |
[DB] Mysql WITH RECURSIVE 구문 사용 방법 (4) | 2025.08.04 |
주니어 개발자가 사라지는 이유 (2) | 2025.07.29 |
GPU 쓰는 기업 모두 위험! NVIDIA, 보안 패치 긴급 배포 (4) | 2025.07.21 |