이 질문은 실제로 사용하지는 않지만 파이썬이 어떻게 인턴 문자열을 작성하는지 궁금합니다. 나는 다음을 주목했다.파이썬 문자열 interning
>> "string" is "string"
>> True
이것은 예상대로입니다.
이 작업을 수행 할 수도 있습니다.
>> "strin"+"g" is "string"
>> True
그리고 그것은 꽤 영리합니다!
하지만이를 수행 할 수 없습니다.
>> s1 = "strin"
>> s2 = "string"
>> s1+"g" is s2
>> False
왜 파이썬은 s1+"g"
을 평가, 그것은 s1
과 동일 실현과 같은 주소를 가리하지 않을까요? 마지막 블록에서 실제로 어떤 일이 일어나서 False
을 반환합니까?
어떻게 섹시한 출력을 얻었습니까? – Serdalis
@Serdalis : http://docs.python.org/2/library/dis.html – NPE
그리고 기록을 위해 : 파이썬의 peep-hole 최적화는 상수에 대한 산술 연산을 미리 계산합니다 (''string1 "+"s2 "' , '10 + 3 * 20' 등)을 컴파일 타임에 제한하지만 결과는 * 시퀀스 *를 단지 20 개의 요소로 제한합니다 (바이트 코드를 과도하게 확장하지 못하도록 [없음] * 10 ** 1000을 방지). ''strin "+"g "'를''string ''에 접목시킨 것은이 최적화입니다. 결과는 20 자보다 짧습니다. –