Python3/Python3 lang
[Python3] is와 == 의 차이
Razelo
2022. 7. 18. 22:20
나는 처음에 이 둘이 완벽하게 동일하다고 생각했다.
사건의 발달은 이러하다.
조건문을 써줄 일이 있었는데 != 을 is not 으로 명시해주었다.
이렇게 하면 읽는 사람이 좀 더 쉽게 읽을 수 있을거라고 나름 생각했다.
그런데 문제가 생겼다.
당연히 될거라고 생각했는데 정상 동작하지 않았다.
is 가 무엇일까에 대해서 검색해보면 해답을 찾을 수 있다.
is 는 ==와 달리 값을 비교하는게 아니라 레퍼런스 즉 포인터를 비교한다.
python3 에서 변수는 내부적으로 데이터를 가리키는게 아니라 인스턴스 포인터를 가리킨다고 한다.
그러니 쉽게 말하면
is 연산자는 포인터(레퍼런스)를 비교하는 연산자이지 데이터를 비교하는 연산자가 아니라는 것이다.
그러니 주로 None 과 False, True 를 비교할때 사용하자.
내가 문제가 되었던건 값 비교에 is 를 썼기 때문이다.
간만에 재밌는 팁을 얻었다.
아래 블로그에서 도움을 얻었다.
감사합니다.
http://www.songtory.com/post/001001/1/264
[python] "is" 와 "==" 차이 : [songtory.com]
Python에 있는 비교문 중에 is 와 == 의 차이를 알아보자. 둘다 비교문이지만 잘못 사용하면 다른 결과가 나온다. 우선 예제를 보자. # is 사용 a = 1 b = 1 >>> a is b True a = "str" b = "str" >>> a is b True # == 사
www.songtory.com
반응형