2011-01-21 2 views
3

저는 지금 책에서 파이썬을 배우고 있습니다. 목록, 문자열, 사전 등에서 특정 항목을 사이트로 지정하기 위해 % s를 사용하는 것이 요점인지 이해할 수 없습니다.% s의 요점이 파이썬에 무엇이 있는지 잘 모르십니까?

예 :

names = ["jones", "cohen", "smith", "griffin"] 

print(names[1]) 
print("%s" % names[1]) 

모두 인쇄 "코헨은"명령 이제까지 % s을 (를) 사용하는 점은 무엇인가?

+1

참고 "% s"% names [1]은 (는) str (이름 [1])과 동일하며 names [1]이 (가) 이미 str 인 경우 아무 작업도 수행하지 않습니다. 자세한 내용은 http://docs.python.org/2.7/library/stdtypes.html#string-formatting을 참조하십시오. –

답변

14

아이디어는 당신이 공부를 시작해야합니다, 당신은 파이썬을 사용하기 시작하고 당신은 쉽게, 그러나

print("The name is %s!" % names[1]) 

대신

print("The name is " + names[1] + "!") 

같은 더 복잡한 출력을 만들 수 있도록하는 것입니다 new string formatting syntax 바로 알기 :

print("The name is {}!".format(names[1]) 

물론이 예제에는 문자열 서식 지정 방법의 진정한 힘. 당신은 (예를 들어, 위의 링크 된 문서에서 가져온), 사람들과 더 많은 작업을 수행 할 수 있습니다

>>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated 
'abracadabra' 
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'} 
>>> 'Coordinates: {latitude}, {longitude}'.format(**coord) 
'Coordinates: 37.24N, -115.81W' 
>>> coord = (3, 5) 
>>> 'X: {0[0]}; Y: {0[1]}'.format(coord) 
'X: 3; Y: 5' 
>>> # format also supports binary numbers 
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) 
'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010' 

등등 ...

+0

고맙습니다. 2.6과 3.1 모두를 다루는 책에서 배워서 그들이 거기에 있다고 믿습니다. –

2

%s 문자열을 구성하는 데 사용됩니다.

다른 많은 언어와 마찬가지로 파이썬에서는 문자열을 변경할 수 없습니다. 따라서 많은 문자열을 연결하면 가비지 수집을 기다리는 메모리에 각각 문자열이 만들어져 저장됩니다.

%s의 요점은 다른 여러 문자열을 조인해야한다면 문자열을 한 번 구성하여 불필요한 메모리 오버 헤드를 줄일 수 있다는 것입니다.

도 틀림없이 +보다 훨씬 편리한 구문이며, 필요한 문자열이 있어야합니다.

3

파이썬에서 % s에 대한 아이디어는 포매팅을위한 것입니다.

a = 1.23 
print "The value is %0.5f" %(a) # prints 1.23000 
2

인쇄 (이름 [1]) 바로 STR() 표현 잉크를 인쇄 ("% S"% 이름 [1]) 한편, 인쇄에 가득 형식 문자열 "% S" 이름 [1]

여기의 효과는 동일합니다.

인쇄 (n1, n2, n3)와 함께 여러 데이터 객체를 공백으로 구분하여 인쇄 할 수 있습니다. 그것을 하드 코딩 된 것으로 생각하십시오.

인쇄물 ("일부 형식 문자열"% (n1, n2, n3))을 사용하면 출력물을 "아름답게"만들 수 있습니다. 형식 문자열은 함께 넣어서 코드 실행 중에 변경 될 수있는 변수가 될 수 있습니다.

0

%s을 사용하면 printf 형식을 사용하고 있습니다. C와 같은 프로그래밍 언어에 익숙합니다. Tim이 지적했듯이 파이썬은 아마도 배워야 할 문자열을 포맷하는 새로운 선호 방법을 가지고 있습니다. 그러나 오래된 방법은 여전히 ​​매우 강력합니다. 보십시오 man sprintf 플래그, 필드 너비, 정밀도 등을 지정할 수있는 방법을 볼 수 있습니다. 나는 파이썬의 인쇄물이 모든 것과 호환된다고 생각합니다.

관련 문제