이전 게시글에서 지나가듯이 이야기했지만, 파이썬으로 코딩을 하다보면 단순한 문자열작성으로 끝나지 않는 경우가있다.
미리 선언한 변수 값을 출력하거나, 계산을 통해 변경된 값들을 string으로 표현하는 경우가 그 예이다.
이런 값들을 표현할때를 포맷팅(formatting)이라고 하며, 포맷팅을 하는 여러 방법에 대해 알아보자
예제는 이전에도 사용했던 컴퓨터 클래스를 약간 수정해서 알아보자
class Computer():
category="조립식"
cpu = 2
cooler = 8
price=2.8
def __str__(self):
return "이곳이다"
myCom = Computer()
print(myCom)
1. "%" 를 사용한 Formatting
# using % formatting
def __str__(self):
return "Computer: %s, %d, %d, %f" % (self.category, self.cpu, self.cooler, self.price)
첫번째로는 "%"를 통한 포맷팅방법이다.
출력할 문자열 안에 %{타입} 을 작성하는 것이다.
기본적으로 %s는 문자열, %d는 정수, %f는 실수를 의미한다.
다만 %f의 경우는 소숫점 몇번째까지 출력을 명시하지않으면 위처럼 0이 길게 출력되는것을 볼 수 있는데
이것은 아래처럼 조절이가능하다
return "Computer: %s, %d, %d, %.2f" % (self.category, self.cpu, self.cooler, self.price)
2. "{}"를 이용한 포맷팅 _ 변수 타입 관계 없이 {} 해주면 된다
# using {} formatting
def __str__(self):
return "Computer({},{},{},{})".format(self.category, self.cpu, self.cooler, self.price)
1번의 방법보다 편하게 {} 를 사용하면 위의 예제처럼 포맷팅하는 값의 데이터 타입을 고려하지않고, 해당하는 변수만 선언해주면된다.
그것이 정수, 문자 등을 가리지 않고 파이썬은 스마트하게 해당하는 값을 받아온다.
소수의 경우 1번과 다르게 딱 선언한 값만을 출력해주는데, 만약 소수 둘째, 셋째 자리까지의 출력을 원한다면 {:.2f}, {:.3f} 와 같은 식을 통해 원하는 소수점을 출력할 수 있다.
3. f-string Formatting
# using f-string formatting
def __str__(self):
return f"Computer({self.category}, {self.cpu}, {self.cooler}, {self.price})"
물론 개발자마다 취향은 다르겠지만, 필자의 경우 f-string을 알게된 이후로 위의 2가지방법으로 string을 출력한 적이 거의없다.
{}의 경우 1보다 간편하지만, 실제 코드를 작성하는줄이 더 길다고 느껴졌고, 긴 string사이사이에 {}를 선언할경우 몇번째 변수인지 찾는것도 힘들었기 때문이다.
f-string 방법은 문자열 가장 앞에 f를 붙여주고 시작한다. 그리고 바로 변수를 넣을 위치에 {변수명} 을 작성해주면 된다.
때문에, 가독성이 굉장히 좋다는 장점이 있다.
'Python' 카테고리의 다른 글
[Python] 파이썬 - 07. 올림(ceil), 내림(floor), 반올림(round) (0) | 2023.03.25 |
---|---|
[Python] 파이썬 - 06. 대입연산, 얕은 복사, 깊은 복사 (0) | 2023.03.11 |
[Python] 파이썬 - 04. __str__ (0) | 2023.02.25 |
[Python] 파이썬 - 03. 클래스 __call__, callable() (0) | 2023.02.18 |
[Python] 파이썬 - 02. 클래스 인스턴스, self, __init__ 이란? (0) | 2023.02.05 |