Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 __str__과 __repr__의 차이점은 무엇입니까?

<시간/>

내장 함수 repr() 및 str()은 각각 object.__repr__(self) 및 object.__str__(self) 메서드를 호출합니다. 첫 번째 함수는 개체의 공식 표현을 계산하고 두 번째 함수는 개체의 비공식 표현을 반환합니다.

두 함수의 결과는 정수 개체에 대해 동일합니다.

>>> x = 1 
>>> repr(x)
'1'
>>> str(x)
'1'

단, string object의 경우는 그렇지 않습니다.

>>> x = "Hello"
>>> repr(x)
"'Hello'"
>>> str(x)
'Hello'

string 객체의 repr() 반환 값은 eval() 함수로 평가할 수 있으며 결과는 유효한 string 객체입니다. 그러나 str()의 결과는 평가할 수 없습니다.

>>> y1 = repr(x)
>>> eval(y1)
'Hello'
>>> y2 = str(x)
>>> eval(y2)
NameError: name 'Hello' is not defined

요약. repr()은 객체의 기본적이고 명확한 표현을 반환합니다. 여기서 str()은 읽을 수 있지만 항상 모호하지 않을 수 있는 비공식적인 표현을 제공합니다.