저는 변수를 출력할 때, 문자열을 이어 붙여서 출력하곤 했습니다. 그런데, 사실 간단한 방법이 있었습니다. 파이썬 3.6 부터는 Literal String Interpolation이 도입되었습니다. PEP 498에서는 이를 f-string으로 언급하고 있는 듯 합니다.

 

 


 간단하게 예제 몇 개를 보도록 하겠습니다. 먼저 cost를 출력하는 방법입니다.

 

 

 앞에 f 지시자가 들어갔다는 것을 보시면 됩니다. 그리고, 뒤에 {cost}라고 적혀져 있는데요. 실행 결과를 보겠습니다.

 

 

 cost is 21350이라고 나옵니다. cost가 {cost}이다. 꽤나 유용하게 쓰일 법 합니다. 왜냐하면, 저는 이러한 작업을 문자열을 연결해서 많이 했기 때문입니다. 그런데, 이 방법은 읽기 쉽습니다. 많이 쓰일 법 합니다.

 

 

 당연하게도 따옴표를 넣을 수도 있는데요. 위 예제를 cost is '21350'을 출력하는 예제입니다. 중요한 것은 '는 문자열을 구분하는 특수한 문자이기 때문에, escaping을 시켜야 합니다. 이 용어는 아마도, sql injection을 배우신다면 이스케이핑 처리를 해 주어야 한다고 많이 들으실 텐데요. 그 escaping 입니다.

 

 

 실행 결과는 위와 같습니다.

 


 이제, 옵션을 주어서 출력하는 방법을 알아 보겠습니다. c언어에서 printf문을 많이 써 보셨다면, 5d 정도는 아실 겁니다. 공간을 5만큼 주고 우측 정렬을 하라는 의미입니다. 마찬가지로 쓸 수 있는데요. {i: 5d} 이렇게 쓰면, 변수 i값을 출력할 때, 공간을 5만큼 주고 오른쪽 정렬을 해서 출력하라는 의미입니다. 결과를 보면 알 수 있습니다.

 

 

 결과가 잘 나왔습니다. 요구사항이 하나 더 들어왔습니다. 3자리 수마다 콤마를 찍는 것은 국룰입니다. 즉, 1000 대신에 1,000 이렇게 찍고 싶습니다. 그렇게 할 수는 없을까요? 문서를 보시면, 이상한 문법 같은 게 나오는데요. 포맷 spec 부분만 보겠습니다. 쭉 보면 뭔가 필요한 부분일 거 같은 정보는 width, grouping_option, 소수점 자릿수 (precision), type 순으로 온다는 것입니다.

 

 

 10,d는 width가 10이고, grouping 옵션이 ,이고, 타입이 정수라는 것입니다. 실행 결과는 아래와 같습니다.

 

 

 잘 나왔네요.

 


 이제 소수점에 대해서도 찍어 보겠습니다.

 

 

 acc가 37/53이라고 나왔습니다.

 

 

 이것을 그냥 출력하면 0.6981132075471698 이렇게 찍는 것을 알 수 있습니다. 너무 긴 거 같습니다. 소수점 4번째 자리까지 찍고 싶습니다.

 

 

 그러면 이렇게 바꾸면 되겠군요.

 

 

 의도대로 잘 출력이 된 듯 하네요. 이전에는 string append를 해서 출력을 많이 했었습니다. 이 기능을 알고 나니, 변수 같은 것들을 출력할 때에는 f string을 써야 겠다고 생각하였습니다. 편한 기능은 많이 써 봐야 할 듯 싶습니다.