Python F-String

2023년 2월 21일 수정

F-String

F-string은 🌏PEP-498 제안을 통해 Python 3.6 부터 지원되기 시작한 문자열 포매팅 기능으로 정식 명칭은 Literal String Interpolation 이다.

기본

기능 이름 답게 문자열 제일 앞에 f 를 붙이면 F-String이 된다. 그리고 문자열 내용에 중괄호({...})로 대체할 내용을 넣을 수 있다.

>>> name = "Conrad"
>>> print(f"My name is {name}")
My name is Conrad

런타임 표현

중괄호 내부에는 런타임에서 동적으로 작동하는 코드를 넣어도 원하는대로 동작한다.

>>> f"1 + 2 = {1+2}"
'1 + 2 = 3'

함수 호출

런타임도 되니 당연히 함수 호출을 명시하는 것도 가능하다.

>>> def makeDouble(v):
...     return v * 2
...
>>> f"This is doubler! If you enter 10, it returns {makeDouble(10)}"
'This is doubler! If you enter 10, it returns 20'

C 식 포맷 스타일링

C 언어printf 류의 함수에서 많이 쓰이는 포맷 지시 문자도 비슷하게 쓸 수 있다. 예를 들어 %04d 는 F-String에서는 #04d 로 쓸 수 있다.

>>> value = 12
>>> f"the value is {value:#04d}"
'the value is 0012'

% 가 아니라 # 이 쓰인다는 점에 주의하자.

디버깅에 유리한 표현 방식

Python 3.8에서 추가된 F-String 기능으로 자신의 이름과 값을 좀 더 편하게 로깅하는 스타일을 쓸 수 있다. 아래와 같은 식이다.

>>> value = 100
>>> f"{value=}"
'value=100'

필요하다면 C 언어식 포맷을 지정할 수도 있다.

>>> value = 100
>>> f'{value=:#10d}'
'value=       100'

주의사항

F-String의 치환 문법 내부에는 백슬래시(\)를 사용할 수 없다.

>>> "the \"back-slash\" string"
'the "back-slash" string'
>>> f'the \'back-slash\' string'
"the 'back-slash' string"
>>> f'the {\'back-slash\'} string'
  File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash

필요하다면 별도의 문자열로 뽑은(?) 다음 이를 활용할 수 있다.

>>> bsstr = "'back-slash'"
>>> f"the {bsstr} string"
"the 'back-slash' string"

기타

이 글은 🌏내 소유 블로그 동일 내용의 글을 축약해서 정리한 글이다.