1. https://wikidocs.net/134994



str()과 repr() 함수

python에서 str()과 repre() 모두 객체를 문자열로 반환

str()은 비공식적인 문자열을 출력하고 repr()은 공식적인 문자열을 출력을 함

공식적이라는 말은 컴퓨터, 즉 시스템에서 인식이 가능하도록 출력을 한다는 의미

str()

  • 비공식적 문자열 출력
  • 프로그램 사용자가 사용 (end user)
    • 프로그램 사용자가 사용하거나 알아보기 쉬움

repr()

  • 공식적 문자열 출력
  • 문자열로 객체를 다시 생성함
  • 프로그램 개발자들이 사용 (developer)



변수에 숫자를 넣어 str()과 ` repr()` 을 적용하면 아래와 같음

>>> a = 123
>>> str(a)
'123'

>>> type(str(a))
str


>>> a = 123
>>> repr(a)
`123

>>> type(repr(a))
str

두 변수 다 str 타입



문자열에 두 함수를 적용하면 다른 결과 나옴

>>> a = "Python Test"
>>> str(a)
`Python Test`

>>> a = "Python Test"
>>> repr(a)
"'Python Test'"

str()은 문자열 그대로를 반환

repr()은 `` 로 감싼 형태의 문자열을 반환



날짜 출력하는 경우 차이가 명확함

>>> a = datetime.datetime(2024, 8, 8) 
>>> str(a)
'2024-08-08 00:00:00'

>>> a = datetime.datetime(2024, 8, 8)
>>> repr(a)
'datetime.datetime(2024, 8, 8, 0, 0)'

str()의 경우 사용자가 보기 편한 형태로 출력이 되었지만 repr()의 경우 datetime 객체 그대로 저장이 됨


이 때, 문자열을 다시 객체로 바꿔주고 싶은 경우 eval() 함수를 사용함

>>> a = datetime.datetime(2024, 8, 8)
>>> a_str = str(a) # 사용자가 이해하기 편한 형식으로 변환했지만 시스템이 이해할 수 없는 형식
>>> type(a_str)
str

>>> eval(a_str)
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers


>>> a = datetime.datetime(2024, 8, 8)
>>> a_repr = repr(a)
>>> type(a_repr)
str

>>> eval(a_repr)
datetime.datetime(2024, 8, 8, 0, 0)

>> type(eval(a_repr)) # 문자열을 다시 datetime 객체로 바꿈
datetime.datetime

카테고리:

업데이트: