파이썬 f-string

김기현·2022년 1월 4일
post-thumbnail

세 가지 문자열 포매팅

파이썬은 세 가지 문자열 포매팅을 지원합니다.

  1. % operator 방식
  2. str.format 방식
  3. f-string방식

% operator 방식은 파이썬이 처음 사용될 때 지원되었던 방식이고,
str.format 방식은 파이썬3의 등장 이후로,
f-string 방식은 3.6 버전 이후로 등장한 가장 최신의 방식입니다.

name = 'David'
age = 20

ex1 = 'Hello World! my name is %s and I am %i' % (name, age) 
# %방식
ex2 = 'Hello World! my name is {} and I am {}'.format(name, age)  
# str.format
ex3 = f'Hello World! my name is {name} and I am {age}' 
# f-string

print(ex1)
print(ex2)
print(ex3)

위 코드의 print결과는 모두 Hello World! my name is David and I am 20으로 동일합니다.

%방식은 타입을 정확히 나타내줘야 하지만, str.format방식은 타입을 나타내주지 않아도 포매팅에 반영을 해 줍니다.
f-string방식은 f""으로 표현하며 위 두 방식보다 직관적이고 편하게 코딩을 할 수 있습니다.

예시1_str.format

name="David"
age=17
main_lang="python"
print("이름 :{0}, 나이: {1}, 주 사용 언어: {2}".format(name, age, main_lang))

예시2_f-string

name="David"
age=17
main_lang="python"

print(f'이름 :{name}, 나이: {age}, 주 사용 언어: {main_lang}')

조금 더 직관적이지 않나요..?


f-string 장점

1. 원하는 형태로 출력

f-string을 사용하면 strftime 함수를 사용하지 않아도 원하는 형태로 출력할 수 있습니다.

import datetime

now = datetime.datetime.now()
print(f"{now:%Y-%m-%d %H:%M}")

# 2022-01-04 22:52
import datetime

now = datetime.datetime.now()
print(now.strftime('%Y-%m-%d %H:%M'))

# 2022-01-04 22:52

2. 성능적인 이점

f-string의 성능이 가장 좋습니다.

import timeit

a = timeit.timeit("""name="David"
age = 20
'%s is %iyears old' % (name, age) """, number=100000)

b = timeit.timeit("""name="David"
age = 20
'{} is {}years old'.format(name, age) """, number=100000)

c = timeit.timeit("""name="David"
age = 20
'{name} is {age}years old'""", number=100000)

print(f"operator방식의 total : {a}, str.format의 total : {b}, f-string의 total : {c}")

#operator방식의 total : 0.026224337, 
#str.format의 total : 0.031789269999999994, 
#f-string의 total : 0.0011817790000000078

3. 연산 지원

a = 10
b = 100
sum_result = f'sum result is {a+b}'
print(sum_result)

# 결과
110
profile
피자, 코드, 커피를 사랑하는 피코커

0개의 댓글