Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 객체를 문자열 표현으로 변환하는 방법 – str()과 repr()의 차이 완벽 정리

파이썬에서 객체를 문자열로 변환하는 방법

파이썬에서 객체를 문자열 표현으로 변환하는 가장 널리 사용되는 방법은 내장 함수인 str()을 사용하는 것입니다. 숫자, 리스트, 딕셔너리 등 다양한 타입의 객체를 손쉽게 문자열로 변환할 수 있습니다.

>>> no = 100
>>> str(no)
'100'
>>> L1 = [1, 2, 3, 4]
>>> str(L1)
'[1, 2, 3, 4]'
>>> d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> str(d)
"{'a': 1, 'b': 2, 'c': 3, 'd': 4}"

위 예제에서 확인할 수 있듯이, str()은 정수, 리스트, 딕셔너리 등 어떤 객체든 사람이 읽기 쉬운 형태의 문자열로 변환해 줍니다.

str()과 repr()의 차이점

파이썬에는 str() 외에도 repr()이라는 또 다른 문자열 변환 함수가 있습니다. 두 함수의 역할은 다음과 같이 구분됩니다.

  • repr(): 객체의 공식적인(official) 표현을 반환합니다. 모호하지 않고(unambiguous), 대개 eval()을 통해 원래 객체를 다시 생성할 수 있는 형태입니다.
  • str(): 객체의 비공식적인(informal) 표현을 반환합니다. 사람이 읽기 쉽지만, 항상 명확하지는 않을 수 있습니다.
>>> str(d)
"{'a': 1, 'b': 2, 'c': 3, 'd': 4}"
>>> repr(d)
"{'a': 1, 'b': 2, 'c': 3, 'd': 4}"
>>> repr(L1)
'[1, 2, 3, 4]'
>>> repr(no)
'100'

내장 타입의 경우 str()repr()의 출력 결과가 동일하게 보일 수 있지만, 두 함수의 의미와 용도는 분명히 다릅니다.

__str__()과 __repr__() 메서드 활용

사용자 정의 클래스에서는 특수 메서드인 __str__()__repr__()을 직접 구현하여 각 함수가 반환할 문자열을 지정할 수 있습니다.

class Point:
def __init__(self, x, y):
self.x = x
self.y = y

def __str__(self):
return f"좌표: ({self.x}, {self.y})"

def __repr__(self):
return f"Point({self.x}, {self.y})"

p = Point(3, 4)
print(str(p)) # 좌표: (3, 4)
print(repr(p)) # Point(3, 4)

print() 함수나 f-string은 기본적으로 str()을 호출하므로, 사용자에게 보여줄 메시지는 __str__()에, 디버깅 및 개발용 표현은 __repr__()에 정의하는 것이 좋은 습관입니다.