[Python] format과 f-string에 대하여

DyungE_100·2021년 8월 16일
1

Python

목록 보기
1/1

오늘은 파이썬에서 쓰면 유용한 기능에 대해서 알아보려고 합니다.
바로 format과 f-string 기능이 그것인데, 소개하기 이전에 formatting이란 무엇인지 알아보려고 합니다.

Formatting이란 무엇인가?

주로 String(문자열)을 쓸 때 어떠한 값(숫자)이나 문자열을 대입할 때 쓰이는 방법입니다.
%-formatting이란 방법도 있는데, %연산자를 이용합니다.
먼저 예를 보여드린다면,

my_name = 'DyungE_100'
print("안녕하세요! %s라고 해요!" % my_name)

여기서 문자열을 넣고자 하는 자리에 %s를 적고 그 옆에 %를 쓴 상태로 넣고자 하는 값을 넣으면 됩니다.
넣고 싶은 값이 만약 정수형이라면 %d를 쓰고 실수형이라면 %f를 쓰면 됩니다. 여러 가지 값을 넣고 싶다면 아래와 같이 괄호를 이용하여 쓰면 됩니다.

my_name = 'DyungE_100'
my_hobby = '헬스'
time = 8
print("안녕하세요! %s라고 해요! 제 취미는 %s이고 보통 저녁 %d시에 하러 갑니다!" % (my_name, my_hobby, time))

위와 같이 time변수는 8이라는 정수형 데이터를 갖고 있기 때문에 %d를 쓰면 됩니다. 이와 같이 %연산자를 쓰면서 나열하면 되는 방식입니다.
저를 포함해서 C를 먼저 배우신 분들은 익숙하시겠지만 문장이 길어지면 길어질수록 앞에 나올 format함수와 f-string에 비해서 보기 힘들어지는 게 느껴지실겁니다.

format함수란 무엇인가?

format함수란 {}를 이용하여 formatting하는 방식으로 글로 적는 것보다 예제를 보면서 위의 %-formatting과 비교하면 느낌이 확 와닿으실겁니다.

my_name = 'DyungE_100'
my_hobby = '헬스'
time = 8
print("안녕하세요! {0}라고 해요! 제 취미는 {1}이고 보통 저녁 {2}시에 하러 갑니다!".format(my_name, my_hobby, time))

{}마다 0부터 시작해서 숫자가 적혀있고 그에 해당하는 값을 format함수의 인자로 넣으면 되는 방식입니다. 물론 중복해서 넣게 된다면 {}를 추가해서 넣어주거나 순서를 바꿔서 넣어줘도 무방합니다. 그와 같은 예제는 아래와 같습니다.

year = 2021
month = 8
day = 16
print("오늘의 날짜는 {y}년 {m}월 {d}일이다. 벌써 {y}년이라니!".format(y=year, m=month, d=day))

위의 예제처럼 format함수의 인자를 직접 대입해서 입력하거나 중복해서 사용하는 것이 가능합니다. 따라서 위의 %-formatting보다 유연하고 다양하게 사용 가능하다고 볼 수 있습니다.

f-string이란 무엇인가?

f-string이란 가장 최근에 나온 formatting으로 f{}만 알면 되는 쉽고 간단한 방법입니다.
먼저 예제를 본다면

singer = 'IU'
song = 'Eight'
print(f"제가 가장 좋아하는 가수는 {singer}입니다. 노래는 {song}을 가장 좋아합니다.")

이런 식으로 "" 맨 앞에 f를 붙이고 원하는 변수를 넣어주면 됩니다.
더불어 f-string의 이러한 기능을 활용한다면 이런 것도 가능합니다.

p = {"IU":"Eight", 
     "ParkHyoShin":"Wild_flower", 
     "ShinYongJae":"First_line"}
print(f"최근에는 {p['IU']}, {p['ParkHyoShin']}, {p['ShinYongJae']}을 많이 듣습니다.")

위의 예제처럼 []를 활용한 딕셔너리값을 f-string과 함께 사용하기도 합니다.

마치며

오늘은 f-stringformat함수에 대하여 적어보았습니다. 부족한 부분이 많겠지만 앞으로 공부하면서 헷갈리거나 자세히 공부한 부분들은 여기에 전부 적어보려고 합니다.
잘못된 부분이 있어 지적해주신다면 겸허히 받아들여 수정하도록 하겠습니다. 이 글을 읽어주셔서 감사합니다.

1개의 댓글

comment-user-thumbnail
2022년 9월 8일

잘보고갑니다!

답글 달기