웹사이트 검색

Python ID 연산자 및 "=="와 "IS" 연산자의 차이점 알아보기


이 문서는 주로 Python의 중요한 연산자("IDENTITY OPERATOR ")와 ID 연산자의 차이점(is, is not)을 설명하기 위해 선별되었습니다. ) 비교 연산자 (==)에서.

신원 연산자

항등 연산자(“is ”“is not ”)는 객체의 메모리 위치를 비교하는 데 사용됩니다. 객체가 메모리에 생성되면 해당 객체에 고유한 메모리 주소가 할당됩니다.

  • '=='는 두 객체 값이 동일한지 여부를 비교합니다.
  • 'is'는 두 객체가 모두 동일한 메모리 위치에 속하는지 비교합니다.

세 개의 문자열 개체 Name, Name1Name2를 만듭니다. 문자열 개체 NameName2는 동일한 값을 보유하고 Name1은 다른 값을 보유합니다.

우리가 이러한 개체를 만들 때 뒤에서 일어나는 일은 해당 개체가 메모리에 생성되고 프로그램 수명 동안 사용할 수 있다는 것입니다.

이제 비교 연산자 “== ”를 사용하여 두 개체 값이 동일한지 확인할 수 있습니다. 비교 연산자의 출력은 부울(True 또는 False) 값입니다.

이제 두 값을 비교하여 동등성을 확인했으므로 항등 연산자의 작동 방식을 살펴보겠습니다.

내장된 Id() 함수는 객체의 "identity"를 가져오는 데 사용됩니다. 수명 동안 개체에 대해 고유하고 상수인 정수입니다.

쉽게 생각하면 이를 고유한 정부 ID 또는 Emp ID가 귀하에게 할당된 것으로 생각하면 마찬가지로 고유한 정수 값이 각 개체에 할당됩니다.

이제 “is ” 연산자를 사용하여 2개의 객체 참조를 비교할 수 있습니다.

ID 연산자를 사용하여 NameName1 또는 Name2을 비교할 때 백엔드에서 수행하는 작업은 단순히 “id(Name ) == id(이름2) ”. id(Name)id(Name2)는 모두 동일한 메모리 위치를 공유하므로 True를 반환합니다.

이제 흥미로운 부분이 나옵니다. NameName1이 모두 동일한 값을 가지며 id() 함수를 실행할 때 동일한 정수 값을 반환하는 이전 예를 살펴보세요. 아래 스크린샷에서 동일한 값을 공유함에도 불구하고 “Name_new” 및 “Name_le” 개체가 동일하지 않다고 생각하는 이유는 무엇입니까?

이는 Python 디자인 구현 때문입니다. 범위(-5,256)의 정수 객체와 20자 이상의 문자열 객체를 생성하는 경우 동일한 값에 대해 메모리에 다른 객체를 생성하는 대신 이러한 객체 이미 생성된 객체에 대한 포인터 역할을 합니다.

아래의 그림 표현은 우리가 지금까지 이 기사에서 본 내용에 대한 명확한 아이디어를 제공합니다.

요약

이번 글에서는 ID 연산자가 무엇인지 살펴보았습니다. 비교 연산자와 항등 연산자의 사용 방법, 메모리에 객체가 생성되는 방법에 대한 설계 구현입니다.