이 질문은 실제로 실제로 사용되지는 않지만 Python이 문자열 인턴을 수행하는 방법에 대해 궁금합니다. 나는 다음을 발견했다.
>>> "string" is "string"
True
이것은 내가 예상했던 것입니다.
이것을 할 수도 있습니다.
>>> "strin"+"g" is "string"
True
그리고 그것은 꽤 영리합니다!
그러나 당신은 이것을 할 수 없습니다.
>>> s1 = "strin"
>>> s2 = "string"
>>> s1+"g" is s2
False
왜 파이썬은 평가하지 것 s1+"g"
, 그것은과 동일 실현 s2
과 같은 주소를 가리? 마지막 블록에서 실제로 무슨 일이 일어나고 False
있습니까?
"string1" + "s2"
,10 + 3*20
컴파일시 등),하지만 결과 한계 시퀀스를 20 요소를 (방지하기 위해[None] * 10**1000
지나치게 당신의 바이트 코드를 확장에서). 다음으로 축소"strin" + "g"
된 것은이 최적화입니다"string"
. 결과는 20 자 미만입니다.