파이썬의 F-String 간단 정리
Python
//
2024년 05월 21일 작성
//
2024년 12월 26일 업데이트
F-string은 PEP-498📎 제안을 통해 파이썬 3.6 부터 지원되기 시작한 문자열 포매팅 기능으로 정식 명칭은 Literal String Interpolation 이다.
F-String 기본
기능 이름 답게 문자열 제일 앞에 f
를 붙이면 F-String이 된다. 그리고 문자열 내용에 중괄호({...}
)로 대체할 내용을 넣을 수 있다.
>>> name = "Conrad"
>>> print(f"My name is {name}")
My name is Conrad
F-String의 런타임 표현식
중괄호 내부에는 런타임에서 동적으로 작동하는 코드를 넣어도 원하는대로 동작한다.
>>> 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'
디버깅에 유리한 표현 방식
파이썬 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"