어딘가에 (내가 생각하기에, 어쩌면 다른 곳에서도), 파이썬이 자동으로 단일 문자열을 참조하므로, 'a' == 'a'
이 아니라 'a' is 'a'
을 읽습니다.파이썬에서 단일 문자 문자열이 동일하다는 보장이 있습니까?
그러나 이것이 파이썬에서 동작을 보장하는지, 아니면 단지 구현에만 해당되는지는 기억하지 못합니다.
공식 출처에 대한 보너스 포인트.
어딘가에 (내가 생각하기에, 어쩌면 다른 곳에서도), 파이썬이 자동으로 단일 문자열을 참조하므로, 'a' == 'a'
이 아니라 'a' is 'a'
을 읽습니다.파이썬에서 단일 문자 문자열이 동일하다는 보장이 있습니까?
그러나 이것이 파이썬에서 동작을 보장하는지, 아니면 단지 구현에만 해당되는지는 기억하지 못합니다.
공식 출처에 대한 보너스 포인트.
구현에 따라 다릅니다. 이 (가 reference 말한대로) 때문에, 이야기하기는 어렵습니다 :
을 ... 실제로 동일한 유형 및 값으로 기존의 객체에 대한 참조를 반환 할 수 있습니다 새로운 값을 계산 불변의 종류, 작업에 가변을 위해 잠시 객체는 허용되지 않습니다.
는 인터프리터가 동일,하지만 항상 작동하지 않습니다 보장에 대한 꽤 좋은 :
x = u'a'
y = u'abc'[:1]
print x == y, x is y
실행을 CPython의 2.6에,이 True False
을 제공합니다.
나는 확실히 모른다. 그러나 결코 그것에 의존하지 않을 것이다. – delnan
그 이유는 공식 (또는 적어도 평판이 좋은) 출처를 찾고 있기 때문입니다 : P –
이 답안에서 주어진 예제는 당신이 * 의존 할 수 없다는 것을 증명합니다. +1 –
모든 구현이 정의됩니다.
인턴에 대한 문서는 "일반적으로 Python 프로그램에서 사용되는 이름은 자동으로 금지되며 모듈, 클래스 또는 인스턴스 속성을 저장하는 데 사용되는 사전에는 키가 저장되어 있습니다."
즉, 이름 일 수 있고 컴파일 타임에 알려진 모든 것이 동일한 이름의 다른 어커런스와 동일 할 가능성이 있지만 (보장되지는 않음) 의미합니다.
다른 문자열은 금지됩니다. 같은 컴파일 단위에 나타나는 상수 문자열을 함께 접혀 (그러나 그것은 또한 단지 구현 세부입니다) 그래서 당신은 얻을 :
>>> a = '!'
>>> a is '!'
False
>>> a = 'a'
>>> a is 'a'
True
>>>
같은 문자열을 얻기도 다른 컴파일 그렇게 구금 된 식별자를 포함하는 문자열 .
>>> '!' is '!'
True
그것은 마음이 부는 것입니다! – theycallmemorty
은 참고 : 동일한 컴파일 유닛 때 식별자 만 공유 아닌 문자열 http://stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is- 오류가 발생하는 경우가 있습니다. 이유는 무엇입니까? http://stackoverflow.com/questions/2987958/how-is-the-is-keyword-implemented-in-python – kriss
왜 세계에서 그 사실을 알아야합니까? –
주로 호기심. 그리고 다른 사람들 (특히 초보자)에게 그것이 언급 된 곳을 명확하게 말할 수 있기를 바란다. –