it-swarm.dev

파이썬에서 % s 대신 % r을 사용해야 할 때?

Learn Python 어려운 방법 21 페이지에서 다음 코드 예제를 봅니다.

x = "There are %d types of people." % 10
...
print "I said: %r." % x

%r 대신 %s가 사용됩니까? %r은 언제 사용하고 %s는 언제 사용합니까?

157
coffee-grinder

%s 지정자는 str() 을 사용하여 객체를 변환하고 %rrepr() 을 사용하여 객체를 변환합니다.

정수와 같은 일부 객체의 경우 동일한 결과를 생성하지만 repr() 은 (이 유형이 가능한 경우) 일반적으로 유효한 Python 구문을 반환합니다. 을 나타내는 객체를 명확하게 재생성하는 데 사용할 수 있습니다.

날짜를 사용한 예는 다음과 같습니다.

>>> import datetime
>>> d = datetime.date.today()
>>> str(d)
'2011-05-14'
>>> repr(d)
'datetime.date(2011, 5, 14)'

repr() Python 구문을 생성하지 않는 유형에는 file과 같은 외부 리소스를 가리키는 유형이 포함됩니다. 문맥.

302
Ben James

변수의 "원시"데이터를 표시하지만 나머지는 사용자에게 표시하는 데 사용되므로 디버깅에 %r를 사용하십시오.

%r 형식이 작동하는 방식입니다. 그것은 당신이 쓴 방식으로 (또는 가까운 곳에) 인쇄합니다. 디버깅을위한 "원시"형식입니다. 사용자에게 표시하는 데 사용 된 \n이 (가) 작동하지 않습니다. %r은 변수의 미가공 데이터인지를 나타냅니다.

months = "\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Here are the months: %r" % months

산출:

Here are the months: '\nJan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug'

Learn Python 어려운 길에서 이 예 를 확인하십시오.

15
Pramod Bhat

%r는 따옴표로 표시합니다.

다음과 같습니다.

I said: 'There are 10 types of people.'.

%s을 (를) 사용한 경우 다음과 같습니다.

I said: There are 10 types of people..
15
manojlds

위의 Ben James 답변 버전입니다.

>>> import datetime
>>> x = datetime.date.today()
>>> print x
2013-01-11
>>> 
>>> 
>>> print "Today's date is %s ..." % x
Today's date is 2013-01-11 ...
>>> 
>>> print "Today's date is %r ..." % x
Today's date is datetime.date(2013, 1, 11) ...
>>>

이것을 실행하면 % r의 유용성을 볼 수있었습니다.

14
macloo