>백엔드 개발 >파이썬 튜토리얼 >Python의 'is' 연산자가 정수와 함께 예기치 않게 동작하는 이유는 무엇입니까?

Python의 'is' 연산자가 정수와 함께 예기치 않게 동작하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-28 04:13:11912검색

Why Does Python's

정수를 사용한 "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.