정수를 사용한 "is" 연산자의 예기치 않은 동작
Python의 "is" 연산자는 두 개체의 동일성을 비교하는 데 사용됩니다. 주어진 코드에서 다음 동작은 예상치 못한 것으로 보입니다.
>>> a = 256 >>> b = 256 >>> a is b True # Expected result >>> a = 257 >>> b = 257 >>> a is b False # This is surprising, despite both values being equal.
이 동작을 이해하려면 Python의 정수 구현을 고려해야 합니다. 작은 정수(구체적으로 -5에서 256 사이)의 경우 Python은 이를 불변 객체로 저장합니다. 여러 변수가 이러한 작은 정수를 참조하면 모두 동일한 기본 개체를 가리킵니다.
이는 첫 번째 비교를 설명합니다. 여기서 a와 b는 모두 동일한 개체에 대한 참조이므로 b는 True를 반환합니다. 그러나 256보다 큰 정수의 경우 Python은 이를 새 객체로 처리하므로 a = 257 및 b = 257은 별도의 객체를 생성하고 a is b는 False를 올바르게 반환합니다.
이 구현 세부 사항에 의존하지 않으려면 다음과 같습니다. 동일성에 관계없이 객체의 값이 동일한지 확인하는 항등 연산자인 ==를 사용하여 임의의 두 객체를 비교하는 것이 더 좋습니다.
위 내용은 Python의 'is' 연산자가 정수와 함께 예기치 않게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!