Better Way 4. f-string을 활용하라

이현준·2022년 4월 26일
0

Effective Python

목록 보기
2/4
post-thumbnail

Effective Python 파이썬 코딩의 기술을 공부한 내용을 기록하며 정리하기 위한 글 입니다.


Better Way 4. f-문자열을 활용하라

파이썬에는 문자열을 formatting하는 여러 방법이 있다. 그 중 가장 일반적인 방법은 % 연산자를 사용하는 것이다.

a = 0b10111011
b = 0xc5f
print('이진수: %d, 십육진수: %d' % (a, b))

이진수: 187, 십육진수: 3167

파이썬은 %s, %x, %f와 같은 C언어에서 사용하는 형식 지정자를 제공하지만, 파이썬에서 C 스타일의 형식 문자열을 사용하는 것에는 문제가 있다.

  • formatting 식에서 오른쪽의 tuple의 데이터 값을 바꾸면 타입 변환이 불가능해서 에러가 발생할 수가 있다.
  • formatting 하려는 값을 바꾸려면 가독성이 매우 떨어지는 식을 써야한다.
  • 같은 값을 여러번 사용하고 싶을 때 tuple에서 같은 값을 반복해야한다

내장함수 format와 str.format

  • format
a = 1234.5678
formatted = format(a, ',.2f')
print(formatted)

1,234.57
  • str.format

str.format를 사용하면 여러 값에 대해 한번에 적용이 가능하고, C스타일의 형식 지정자 대신 위치 지정자 {}를 사용할 수 있다.

key = 'my_var'
value = 1.234

formatted = '{} = {}'.format(key, value)
print(formatted)

my_var = 1.234

각 위치 지정자에는 콜론 뒤에 형식 지정자를 넣어 어떤 형식으로 변환할지 정할 수 있다.

key = 'my_var'
value = 1.234

formatted = '{:<10} = {:.2f}'.format(key, value)
print(formatted)

my_var    = 1.23

만약 %를 표시하고 싶다면 %%로 이스케이프 해야 한다.

print('%.2f%%' % 12.5)
print('{} replaces {{}}'.format(1.23))

12.50%
1.23 replaces {}

위치 지정자 {}에 위치 인덱스를 사용할 수 있고 같은 위치 인덱스를 여러번 사용할 수도 있다.

formatted = '{1} = {0}'.format(key, value)
print(formatted)

1.234 = my_var

Interpolation을 통한 formatting

파이썬 3.6부터 도입된 새로운 방법에서는 형식 문자열 앞에 f를 붙여야 한다. f-문자열을 사용하면 위치 지정자 {} 안에 파이썬 식을 넣을 수 있어서 다양한 활용이 가능하다.

key = 'my_var'
value = 1.234

formatted = f'{key} - {value}'
print(formatted)

my_var = 1.234
profile
기록, 정리하는 습관 만들기

0개의 댓글