Menu

파이썬 f-string: 포매팅, 표현식, 숫자 포맷 명세

파이썬 f-string 실전 가이드 — 변수와 표현식 끼워 넣기, 숫자와 날짜 포매팅, 그리고 예전 포맷 스타일을 언제 써야 하는지까지.

실제로 쓰게 될 포매팅

현대 파이썬 코드가 텍스트 안에 값을 끼워 넣는 기본 방식이 바로 f-string이에요. 여는 따옴표 앞에 f를 붙이면, {...} 안에 든 내용이 살아 있는 표현식이 됩니다:

main.py
Output
Click Run to see the output here.

세 가지를 눈여겨보세요. f 접두사가 리터럴 전체를 템플릿으로 만들어준다는 것. 중괄호가 값을 끼워 넣는 자리라는 것. 그리고 중괄호 안의 표현식은 문자열을 썼을 때가 아니라 print가 실행되는 시점에 평가된다는 것이요.

여러분은 다른 어떤 포매팅 스타일보다 f-string을 훨씬 자주 쓰게 될 거예요. "Hello, " + name + "."보다 짧고, "Hello, %s." % name보다 명확하고, .format()보다 유연해요.

평가될 수 있는 건 다 들어갈 수 있어요

중괄호 안에 들어갈 수 있는 건 변수 이름만이 아니에요. 어떤 파이썬 표현식이든 가능합니다:

main.py
Output
Click Run to see the output here.

메서드 호출, 인덱싱, 산술, 조건 표현식 — 전부 됩니다. 규칙은 하나: 중괄호 사이는 짧게 유지하세요. 자리 표시자 안에 세 줄짜리 계산을 쓰고 있다면, 먼저 이름 있는 변수로 빼서 그 이름만 넣으세요.

숫자 포매팅

표현식 뒤에 콜론을 붙이면 포맷 명세(format spec) 가 열려요. 값을 어떻게 표시할지 조절하는 작은 언어예요:

main.py
Output
Click Run to see the output here.

각 조각이 하는 일을 요약하면:

  • .2f — float, 소수점 뒤 두 자리. 표시용 반올림이에요.
  • , — 천 단위 구분자. int와 float 모두에 동작해요.
  • .1% — 100을 곱하고 %를 붙여줍니다. 비율과 비중에 좋아요.
  • .2e — 소수 두 자리의 지수 표기법.

이것들을 조합할 수 있어요. f"{total:,.2f}""1,234.57"이 됩니다.

패딩, 너비, 정렬

출력 열을 나란히 맞출 때:

main.py
Output
Click Run to see the output here.

<10은 "왼쪽 정렬, 최소 10칸까지 패딩"을, >5는 "오른쪽 정렬, 5칸 패딩"을 의미해요. 가운데 정렬은 ^를 쓰고요.

공백이 아닌 다른 문자로 채우려면 정렬 플래그 앞에 채움 문자를 넣으세요:

main.py
Output
Click Run to see the output here.

날짜 포매팅

{value:spec}datetime 객체에도 똑같이 동작합니다:

main.py
Output
Click Run to see the output here.

콜론 뒤의 명세는 strftime 포맷 문자열이에요. strftime에서 쓸 수 있는 모든 % 코드가 여기서도 동작합니다 — 자세한 건 datetime 페이지에서 다룰게요.

디버깅용 = 트릭

알아두면 정말 쓸모 있는 기능 하나: 표현식 뒤에 =을 붙이면 파이썬이 표현식 원문 그 값을 같이 출력해 줍니다:

main.py
Output
Click Run to see the output here.

출력은 count=7, price=19.99, count * price=139.93가 돼요. print("count =", count)에 해당하는 걸 세 글자로 대신한 셈이죠. 다음에 디버깅하다가 값을 몇 개 찍어보고 싶을 때 기억해 두세요.

중괄호 이스케이프

출력에 글자 그대로의 {}가 필요하면, 두 번 쓰면 됩니다:

main.py
Output
Click Run to see the output here.

단일 중괄호는 표현식을 열고, {{}}는 출력에서 {}를 대신합니다.

여러 줄 f-string

f-string은 삼중 따옴표와도 잘 어울려요. 짧은 템플릿을 인라인으로 만들 때 편합니다:

main.py
Output
Click Run to see the output here.

긴 f-string은 인접한 여러 문자열 리터럴로 나눠서 쓸 수도 있어요 — 파이썬이 자동으로 이어 붙여 줍니다:

main.py
Output
Click Run to see the output here.

예전 스타일은 언제 마주치는가

기존 코드에서 이 두 가지 예전 포매팅 스타일을 만나게 될 거예요:

main.py
Output
Click Run to see the output here.

셋 다 같은 결과를 냅니다. 열 번 중 아홉 번은 f-string이 가독성에서 이겨요. 템플릿을 한 번 만들어 여러 번 적용해야 할 때는 .format()을 꺼내 쓰고, %는 이미 그걸 쓰고 있는 옛 코드를 유지보수할 때만 쓰세요.

이럴 땐 다른 도구가 맞아요

두 가지 상황에서는 f-string을 쓰지 마세요.

SQL 쿼리 조립. 사용자 입력을 f-string으로 SQL에 끼워 넣는 일은 절대 하지 마세요. 데이터베이스 라이브러리의 파라미터화된 쿼리(parameterized query)를 쓰세요. 여기서 f-string을 쓰는 게 바로 SQL 인젝션이 일어나는 경로예요.

번역될 UI 문구 조립. 앱이 여러 언어를 지원한다면, 외부 번역 도구가 집어갈 수 있는 템플릿이 필요해요 — 보통은 gettext_(...)나 프레임워크별 헬퍼예요. f-string은 구조를 소스 코드에 박아 넣어버리기 때문에 번역을 훨씬 어렵게 만들어요.

그 밖의 모든 경우 — 로그, 콘솔 출력, URL 조립, 설정 문자열 만들기, 화면 표시용 숫자 포매팅 — 에서는 f-string이 정답이에요.

다음: 숫자와 불리언

f-string이 숫자 포매팅에서 큰 역할을 하니까, 숫자 타입을 조금 더 깊이 알아두는 게 도움이 돼요. 다음 문서에서 다룹니다.

자주 묻는 질문

파이썬의 f-string이 뭔가요?

f-string은 앞에 f를 붙인 문자열 리터럴이에요. {...} 안의 내용은 실행 시점에 그 표현식의 값으로 대체됩니다. f"Hello, {name}"은 현재 name 값을 문자열에 끼워 넣어요.

f-string은 언제 파이썬에 추가됐나요?

Python 3.6부터입니다. 현대의 파이썬 버전은 모두 지원하기 때문에 오늘 Python 3 코드를 쓰고 있다면 어디서든 f-string을 쓸 수 있어요. 예전 포매팅 스타일(%.format())도 여전히 동작하지만, 대부분의 경우 덜 깔끔하게 읽힙니다.

파이썬에서 숫자를 소수점 둘째 자리까지 표시하려면요?

중괄호 안에서 콜론 뒤에 포맷 명세를 쓰세요: f"{price:.2f}". .2f는 '소수점 뒤 두 자리까지의 float'이라는 뜻이에요. 표시되는 값만 반올림되고, 원래 숫자는 그대로예요.

f-string 안에 어떤 표현식이든 넣을 수 있나요?

네 — 산술 연산, 메서드 호출, 함수 호출, 조건 표현식 모두 됩니다. f"{name.upper()}"f"{price * 1.2:.2f}"는 둘 다 작동해요. 표현식은 짧게 유지하세요. 중괄호 안의 코드가 복잡해진다면 먼저 변수에 계산해 놓는 게 좋아요.

Coddy로 코딩 배우기

시작하기