(Python) f-string

choieastsea·2021년 2월 25일
0

Python

목록 보기
1/1

파이썬에서는 다양한 문자열 표현방식이 존재하지만 f-string을 사용하는 것이 가장 쉽다고 생각한다. format메서드, %를 사용하는 방법보다 훨씬 직관적이다. 차근차근 알아보도록 하자.

문자열 formatting을 하는 몇가지 방법

REPL모드(터미널에서 python입력)에서 입력해보자.

% 연산자

C의 printf와 비슷한 출력방식이다. 변수 타입에 따라 %d(정수), %f(실수), %s(문자열) 등이 있고, 이게 무엇인지 문자열 뒤에 comma 없이 %( )의 괄호 안에 명시하도록 한다.

%와 format character사이에는 숫자를 적어줄 수 있는데, %-0N.Xf 와 같은 꼴로 사용된다. 글자 단위로 쪼개면 다음과 같은 의미이다.

  • % : 이 자리는 변수나 표현식의 값으로 대체될 것
    • : 왼쪽 정렬
  • 0 : 빈자리가 있다면 0으로 채울 것
  • N : 최대 N자리로 출력한다
  • .X : 소수점 X자리로 반올림한다
  • f : 이 자리에 오는 변수는 소수형이다
>>> print('number: %05d' %3)
number: 00003
>>> print('pi: %05.3f' %(3.141592))
pi: 3.142
>>> print('number: %-05dabcde' %3) 
number: 3    abcde
>>> print('pi: %05.3f' %3.14)
pi: 3.140

난 이걸 아직도 어떻게 사용하는지 모르겠다. python에서 type을 일일이 설명하는 출력을 왜하는지도 모르겠다.

format 메서드

대체될 공간에는 중괄호{ }로 감싸고 문자열 뒤에 format 메서드를 사용하여 문자열을 표현할 수 있다. %를 사용하는 것보다 더 가독성이 개선되었다.

>>> name = "choieastsea"
>>> age = 23
>>> print("I'm {} and {} years old.".format(name, age))
I'm choieastsea and 23 years old.

>>> yes_votes = 42_572_654
>>> no_votes = 43_132_495
>>> percentage = yes_votes / (yes_votes + no_votes)
>>> '{:-9} YES votes  {:2.2%}'.format(yes_votes, percentage)
' 42572654 YES votes  49.67%'

여기서는 문자열 길이나 위치를 조정할 때, :를 사용하고 그 뒤에 포맷을 적는다.

두번째 문단은 python.org의 예시인데, Number 선언시 underscore(_)가 있다면, 이는 큰 숫자를 가독성좋게 하려고 ,을 붙히는 것과 같다고 보면 된다고 한다. 값 자체에는 영향이 없다.

f-string

문자열('또는 "로 감싸진)앞에 f를 붙히고, 변수나 표현식에는 중괄호 { }로 감싸주면 된다. format함수의 형식과 비슷하지만, 변수명을 뒤에 string method에 적어주는 것이 아니고 문자열에 바로 사용하여 약간 더 직관적이다.

format과 같은 문자열에 대한 예시이다.

>>> name = "choieastsea"
>>> age = 23
>>> f"I'm {name} and {age} years old."
"I'm choieastsea and 23 years old."

>>> yes_votes = 42_572_654
>>> no_votes = 43_132_495
>>> f'{yes_votes:-9} YES votes  {percentage:2.2%}'
' 42572654 YES votes  49.67%'

{변수명: 형식}의 꼴로 출력형태를 예측하기 쉽다.

정렬시에는 형식으로 왼쪽 정렬 <, 가운데 ^, 오른쪽 >을 넣어주면 된다.

>>> cols = ["name", "age", "gender"]
>>> f'||{cols[0]:<5}||{cols[1]:^10}||{cols[2]:>10}||'
'||name ||   age    ||    gender||'

결론

indentation(들여쓰기)가 문법의 요소인 파이썬에서는 가독성이 중요하다고 생각한다. 직관적인 코드를 작성하기 위해 f-string을 사용하는 것이 좋겠다. 사실 난 f-string 외에는 어떻게 사용하는지 맨날 까먹어서 안쓴다😁

참고

https://docs.python.org/ko/3/tutorial/inputoutput.html

profile
choieastsea__:)

0개의 댓글