본문 바로가기

짜투리

[python] 'is'와 '=='

728x90

 오늘 연구실의 뉴비 K쿤과 이야기를 하다가 알아낸 사실이 잇다. 바로.. 'is'와 '=='이 다른 의미라는 것...!!! 

 

 사실 처음 파이썬 문법을 배울 때는 둘의 차이점이 아리송해서 그냥 넘어갓다. 연결리스트 하면서 node is not None 할 때도 그냥.. 코드가 그렇게 쓰는 게 더 직관적이어서 그러케 썻다. 

 

 

 딱 분류하자면, is 는 주소값 비교 ==은 값 비교이다. 

 

 위 코드를 보면 값을 비교하는 두번째 코드는 같다고 출력하지만, 첫번째 코드는 들어잇는 요소는 모두 같지만 리스트라는 주소값을 가리키는 포인터 즉, 주소값이 다르기 때문에 안 돌아간다고 출력하게 된다. 

 

 

 물론 넘파이 배열도 안 돌아간다. 헷갈린다 싶다면 id()를 사용해서 두 아이디가 동일하면 is가 똑같은 거라고 생각하면 편할 것 같다. (참고로 id()는 객체의 주소값을 반환하는 내장 함수다)

 

 


여기서 원시 타입이란 정수, 실수, bool값을 의미한다. 그치만 파이썬은 모든 것이 객체이기에 원시 타입이나 레퍼런스 타입이 의미가 없다... 

 

출처>> https://velog.io/@dnpxm387/TIL24-PYTHON-%EA%B8%B0%EC%B4%88-14

 

TIL#24-1 PYTHON 기초 (14)

python - 자료형, 리스트, 딕셔너리 정리

velog.io

 

 

 이 블로그에서 잘 설명해주었다. 이외에도 심심할 때 읽어보면 재밋는 내용들이 많아서 한 번 읽어보면 좋을 듯!!