파이썬의 f-string 사용법
Feb 27, 2021 · 3 min read



파이썬 3.6에서 소위 f-string이라고 불리는 문자열을 좀 더 쉽게 포멧팅하기 위한 새로운 방법이 추가되었습니다. 이번 포스팅에서는 간결하고 읽기 편한 문법으로 많은 파이썬 개발자들에게 사랑받고 있는 f-string에 대해서 살펴보겠습니다.

기본 문법

파이썬에서 문자열은 아시는 것처럼 홈 따옴표나 쌍 따움표를 이용해서 나타내죠?

>>> "나는 문자열입니다."
'나는 문자열입니다.'

이러한 일반적인 문자열 앞에 f 또는 F 문자만 붙여주면 f-string이 됩니다.

>>> f"나는 f-string입니다."
'나는 f-string입니다.'

변수 치환

중괄호(brace)을 사용하면 f-string 안 에 파이썬의 표현식(expression)을 삽입할 수 있는데요.

>>> x = 1
>>> y = 2
>>> f"{x} + {y}{x + y}입니다."
'1 + 2는 3입니다.'

f-string은 문자열 안에 변수 값을 삽입하는 용도로 사용될 때 그 진가를 발휘됩니다.

>>> first_name = "John"
>>> last_name = "Doe"
>>> f"Welcome, {first_name} {last_name}!"
'Welcome, John Doe!'

함수 호출

f-string을 사용하면 문자열 안에서 함수를 호출한 결과를 삽입할 수 도 있습니다.

>>> word = "Python"
>>> f"{word}{len(word)}글자입니다."
'Python는 6글자입니다.'
>>> f"대문자로는 {word.upper()}이고, 소문자로는 {word.lower()}입니다."
'대문자로는 PYTHON이고, 소문자로는 python입니다.'

다른 표현식

사실 상 파이썬에서 가능한 모든 표현식을 문자열 안에 삽입할 수 있기 때문에 f-string의 활용법은 무궁무진하다고 볼 수 있습니다.

>>> word = "Python"
>>> f"{word}의 첫 두 글자는 {word[:2]} 입니다."
'Python의 첫 두 글자는  Py 입니다.'
>>> word = "Python"
>>> f"{word}를 거꾸로 하면 {word[::-1]} 입니다."
'Python를 거꾸로 하면 nohtyP 입니다.'
>>> f"3회 반복: {','.join([word] * 3)}"
'3회 반복: Python,Python,Python'

객체 치환

f-string 안 에서 객체를 사용하면 해당 객체의 __str__() 메서드가 호출된 결과가 삽입됩니다.

>>> from datetime import date
>>> f"오늘은 {date.today()} 입니다."
'오늘은 2021-02-27 입니다.'

__str__() 메서드 대신에 __repr__() 메서드가 호출된 결과를 삽입하고 싶다면 !r을 뒤에 붙여줍니다.

>>> from datetime import date
>>> f"오늘은 {date.today()!r} 입니다."
'오늘은 datetime.date(2021, 2, 27) 입니다.'

디버깅

Python 3.8에서는 f-string을 좀 더 사용하기 편하도록 문법이 개선이 되었는데요.

기존에는 변수명과 변수값을 콘솔에 출력해볼 때, f-string 안 에 변수를 2번 사용했어야 했습니다.

>>> num = 1
>>> print(f"num={num}")
num=1

하지만 이제는 f-string 안 에 변수를 한 번만 사용해도 되기 때문에 디버깅할 때 특히 유용합니다.

>>> num = 1
>>> print(f"{num=}")
num=1

마치면서

지금까지 파이썬의 f-string을 이용해서 어떻게 문자열을 포멧팅하는지 알아보았습니다. 그 동안 문자열 포멧을 위해서 % 연산자나 str.format() 함수만 사용하셨다면 f-string을 한 번 사용해보시기를 추천드립니다.





최신 포스트


Engineering Blog  by Dale Seo