..

C Style 포맷팅

Formating 이란?

  • Formatting 이란 미리 정의 된 문자열에 데이터 값을 끼워 넣어서 사람이 보기 좋은 문자열로 저장 하는 과정이다.
  • 파이썬에서는 언어에 내장된 기능과 표준 라이브러리를 통해 4가지 방식으로 형식화를 할수 있다.

형식 문자열 과 %

  • % 왼쪽에 들어가는 미리정의된 템플릿을 형식 문자열 이라고 부른다.
  • 템플릿에 끼워 넣을 값들은 연산자의 오른쪽에 단일값 이나 tuple(값이 여러개인경우) 로 지정한다.
  • 읽기 어려운 이진값이나 16진수 값을 십진수로 표시하기 위해 % 를 사용하면 다음과 같다.
      a = 0b10111011
      b = 0xc5f
      print('a : %d , b : %d '%(a,b))
    
      >> a: 187 , b:3167
    
  • 형식 문자열은 연산자 왼쪽에 있는 값을 끼워 넣을 자리를 표현하기 위해 %d 같은 형식 지정자 를 사용한다.
  • C 언어 에서 사용되는 printf 의 대부분의 형식 지정자를 지원한다. (%s,%x,%f 등)

    ! 파이썬에서 C 스타일 형식 문자열을 사용하면 발생하는 문제점 !

    1. 형식 문자열 과 형식 지정자의 튜플의 위치를 바꾸거나 타입 을 바꾸면 타입 변환이 안되므로 오류가 발생할수 있다.
    2. 형식화를 하기 전에 값을 변경하게 된다면 식을 읽기가 매우 어려워 질수 잇다.
    3. 형식화 문자열에서 같은값을 많이 사용하게 된다면 , 튜플에서 같은값을 여러번 사용해야한다.
    

Dictionary

형식화 식에 딕셔너리를 사용하게 된다면, 여러 형식 지정자에 같은 키를 지정해줄수 있어 같은 값을 반복하지 않아도 되므로 앞에서 설명한 3번째 문제점을 해결할수 있다.

name = '철수'
templates = '%s : %s'
before = templates % (name,name)
templates = '%(name)s : %(name)s'
after = templates % {'name':name}
assert before == after

! 딕셔너리 형식 문자열을 사용했을때 발생되는 문제점 !

  • 위에서 설명한거와 같이 값을 표시 하기 전 값을 바꿔야 할 경우 딕셔너리 키와 : 리 추가 됨에 따라 더욱 시각적으로 잡음 이 많아진다.
  • 이 번잡해 지는 경우가 C스타일 형식화 식에 4번쨰 문제점이다.
  • 가독성을 해치는 문자를 제외하더라도 불필요한 중복으로 인해 딕셔너리를 사용하는 형식화 식이 너무 길어진다.
  • 이 떄문에 형식화 문자열을 여러줄로 나눠 써서 하나로 합친뒤 형식화에 사용할 딕셔너리 에넣을 값을 한줄에 하나씩 나열해야한다.
  • 위 형식으로 나눠 사용하여도 코드를 이해하기 위해선 코드를 위 아래로 많이 훑어 보며 형식화 문자열 과 딕셔너리 를 뒤져야한다.
  • 이런 불 연속성 때문에 버그를 찾기 힘들고, 값을 변경해야할 경우 가독성이 매우 나빠진다.