repr()
: 객체의 평가 가능한 문자열 표현 ( “eval ()”가능), 파이썬 객체로 평가되는 문자열 표현
다시 말해:
>>> x = 'foo'
>>> repr(x)
"'foo'"
질문 :
- 내가 할 때 왜 큰 따옴표를 얻
repr(x)
습니까? (나는 할 때 그들을 얻지 못합니다str(x)
) - 내가 어떤 객체인지 x
'foo'
하지eval("'foo'")
않고 왜 내가 얻을 수 있습니까?
답변
>>> x = 'foo'
>>> x
'foo'
따라서 이름 x
은 'foo'
문자열에 첨부됩니다 . 예를 들어 repr(x)
통역사가 'foo'
대신 에을 넣은 x
다음을 호출합니다 repr('foo')
.
>>> repr(x)
"'foo'"
>>> x.__repr__()
"'foo'"
repr
실제로의 매직 메소드 __repr__
를 호출하여에 할당 된 값의 표현이 포함 된 문자열x
을 제공합니다 . 그래서 반환 문자열 내부 의 결과 . 아이디어는 인터프리터에 입력하고에 인수로 전송 된 것과 동일한 값을 얻을 수있는 일련의 기호가 포함 된 문자열을 제공하는 것 입니다.'foo'
x
'foo'
""
"'foo'"
repr
repr
>>> eval("'foo'")
'foo'
를 호출 하면 인터프리터에 eval("'foo'")
입력하는 것과 같습니다 'foo'
. ""
인터프리터에 외부 문자열의 내용을 직접 입력하기 때문 입니다.
>>> eval('foo')
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
eval('foo')
File "<string>", line 1, in <module>
NameError: name 'foo' is not defined
를 호출 하면 인터프리터에 eval('foo')
입력하는 것과 같습니다 foo
. 그러나 foo
사용 가능한 변수 가 없으며 예외가 발생합니다.
>>> str(x)
'foo'
>>> x.__str__()
'foo'
>>>
str
는 객체의 문자열 표현 일 뿐이므로 ( x
변수는 참조 'foo'
)이 함수는 문자열을 반환합니다.
>>> str(5)
'5'
정수의 문자열 표현은 5
입니다 '5'
.
>>> str('foo')
'foo'
문자열의 문자열 표현은 'foo'
동일한 문자열 'foo'
입니다.
답변
대화 형 통역사에 대한 피드백 repr
도 사용 됩니다. 식을 입력하면 (있는 그대로 expr
) 인터프리터는 기본적으로 수행 result = expr; if result is not None: print repr(result)
합니다. 귀하의 예제에서 두 번째 라인은 그래서 되는 문자열을 포맷 foo
표현으로 당신이 원하는 ( 'foo'
). 그리고 인터프리터는 생성 repr
의 esentation 그 따옴표와 함께 당신을 떠날.
% r을 큰 따옴표와 작은 따옴표 이스케이프와 결합하여 인쇄 할 때 왜 .py 파일에 쓰는 방식으로 인쇄하지만 원하는 방식으로 인쇄하지 않습니까?
나는 당신이 여기서 무엇을 요구하는지 잘 모르겠습니다. 텍스트 는을 single ' and double " quotes
통과 할 때 repr
한 종류의 따옴표에 대한 이스케이프를 포함합니다. 물론 그렇지 않으면 파이썬 규칙에 의한 유효한 문자열 리터럴이 아닙니다. 바로 전화로 요청한 것입니다 repr
.
또한 eval(repr(x)) == x
유추는 문자 그대로의 의미가 아닙니다. 근사치이며 대부분의 내장 유형에 적용되지만 가장 중요한 것은 repr
출력 을 보면 유형과 논리적 “값”에 대해 상당히 잘 알고 있다는 것입니다 .
답변
str ()은 최종 사용자를위한 출력을 생성하는 데 사용되고 repr ()은 디버그 개발을 위해 사용되며 객체의 공식을 나타냅니다.
예:
>>> import datetime
>>> today = datetime.datetime.now()
>>> str(today)
'2018-04-08 18:00:15.178404'
>>> repr(today)
'datetime.datetime(2018, 4, 8, 18, 3, 21, 167886)'
출력에서 repr ()은 날짜 객체의 공식 표현을 보여줍니다.
답변
1) 결과 repr('foo')
는 문자열 'foo'
입니다. 파이썬 셸에서 표현식의 결과도 표현으로 표현되므로 본질적으로을 볼 수 repr(repr('foo'))
있습니다.
2) eval
식의 결과를 계산합니다. 결과는 항상 값 (예 : 숫자, 문자열 또는 객체)입니다. 다음과 같이 여러 변수가 동일한 값을 참조 할 수 있습니다.
x = 'foo'
y = x
x와 y는 이제 같은 값을 나타냅니다.
3) 나는 당신이 여기서 무엇을 의미하는지 전혀 모른다. 예를 들어보고 싶은 것을 게시 할 수 있습니까?
답변
당신이 말할 때
foo = 'bar'
baz(foo)
당신은 통과되지 않은 foo
받는 baz
기능. foo
이 경우 값을 나타내는 데 사용되는 이름 일 뿐이며 'bar'
해당 값이 baz
함수에 전달됩니다 .