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

 

반응형