% operator 사용

print() 함수에서 % 연산자는 C 언어의 printf 처럼 동작하므로 C 언어 경험이 있다면 쉽게 사용할 수 있습니다.

단 C 의 단점처럼 변수 타입을 완벽하게 알고 기술하지 않으면 TypeError 예외가 발생하는 문제가 있습니다.


% 연산자를 사용하려면 %(VAR_NAME)TYPE 형식으로 적어주며 VAR_NAME 은 바인딩할 변수명을 TYPE 은 변수의 유형을 적어주면 됩니다.

예로 다음은 int, float, string 값을 출력합니다. 

print('%(num)d, %(float)f, %(string)s ' % {"num": 3, "float": 3, "string": 'hello'})
PY


% 연산자는 출력해야 하는 변수가 많아질수록 실수를 유발할 수 있고 불편하므로 권장하지 않고 있습니다.

str.format

str.format() 은 파이썬 표현식 값을 바인딩할 부분을 중괄호 {} 로 표시하고 .format() 뒤에 바인딩할 값을 기술해 주면 됩니다.

print('We are the {} who say "{}!"'.format('knights', 'Ni'))
PY


변수가 많아지면 순서대로 기술하는게 헷갈릴 수 있습니다. 이때는 중괄호 안에 치환될 문자들(format field)을 적어주고 format() 에서는 치환할 객체들을 적어주면 됩니다.

print('This {food} is {adjective}.'.format(
...       food='spam', adjective='absolutely horrible'))

This spam is absolutely horrible.
PY


str.format() 도 문자열이 많아지면 관리자 어려워지는 문제가 있어서 최신 python(3.6+) 을 사용할 수 있다면 f-string 을 사용하는 게 좋습니다.

f-string

python 3.6 부터 추가된 기능으로 포맷 문자열 리터럴(formatted string literals) 또는 간단하게 f-string 이라고 부릅니다.

문자열에 f 나 F 접두사를 붙이고 표현식을 {expr} 형식으로 작성하면 출력 문자열이 파이썬 표현식의 값으로 바뀝니다.


다음은 math.pi 를 5 자리까지 float 형식으로 출력합니다.

import math

print(f'pi 값은 대략 {math.pi: .5f}입니다.')
PY


':' 뒤에 정수를 전달하면 해당 필드의 최소 문자폭이 되므로 좌측에서부터 정렬할 때 유리합니다.

table = {'Tom': 1234, 'Jack': 4518, 'Eddie': 9638}
for name, phone in table.items():
    print(f'{name:6} ==> {phone:10d}')
PY


Ref