str(), repr()
- 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