4. C 스타일 형식 문자열을 str.format으로 쓰기보다는 f-문자열을 통한 인터폴레이션을 사용하라

 

형식화(formatting)은 미리 정의된 문자열에 데이터 값을 끼워 넣어서 사람이 보기 좋은 문자열로 저장하는 과정

 

파이썬에서 가장 일반적인 방법은 % 형식화 연산자를 사용하는 방법이 있음

템플릿에 끼워 넣을 값들은 연산자의 오른쪽에 단일 값이나 tuple로 지정함

 

ex)

a = 1
b = 2
print("a: %d, b : %d" % (a,b)) 

일반적인 경우는 잘 되지만 tuple내의 key, value의 값이 위치를 바꾸게 되면 오류가 생기는 경우가 발생함

% 좌우의 위치기 서로 맞는지 늘 확인해야함

 

이외에도 딕셔너리 형태로 바꾸는 경우도 있으나

형식화에 사용할 값 중 일부를 약간 변경할 경우 가독성이 불연속성 때문에 버그가 쉽사리 발생

 


 

파이썬3 부터는 %를 사용하는 c 스타일보다 더 표현력이 좋은 고급 문자열 형식화 기능을 도입

 

a = 1234,5678
formatted = format(a, ',/2f')
# , : 천 단위 구분자를 표시

b = '문자열'
formatted = format(b, '^20s')
# ^ 중앙에 값을 표시

 

key = 'my'
value = 1.234

formatted = '{} = {}'.format(key, value)
# 표현을 변경할 수 도 있음
# '{:<10} = {:.2f}'.format(key, value)

>>>
my = 1.234

 

순서를 바꾸지 않아도 가능

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

 


파이썬 3.6 부터는 인터폴레이션을 통한 형식 문자열 : 짧게 f-문자열 

- 형식 문자열의 표현력을 극대화

- 키와 값을 불필요하게 중복 지정해야하는 부분을 없애줌

 

key = 'my'
value = 1.234

formatted = f'{key} = {value}'

 

비교

f_string = f'{key:<10} = {value:.2f}'

c_tuple = '%-10s = %.2f' % (key, value)

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

c_dict = '%(key)-10s = %(value).2f' % {'key' : key, 'value': value}

 

정리

f-문자열이 제공하는 표현력, 간결성, 명확성을 고려할 때 최고임

 

본 블로그는 [파이썬 코딩의 기술] 서적을 참고하여 작성하였습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기