Python

[Python] 비교 연산자와 논리 연산자의 Boolean 값 차이 (==, !=와 is, is not의 차이)

쟈비쓰 2021. 8. 31. 13:50
728x90

Python뿐만 아니라 프로그래밍 언어에서 비교 연산자, 논리 연산자는 알고리즘을 짜기 위한 기초이다.

 

그런데 기초라고 생각하다가 문득 Python의 ==, !=와 is, is not의 차이가 무엇인지 모른다는 생각을 했다.

우선 둘의 결과 bool값을 비교해보면 다르다.

print(12 == 12.0) # result: True
print(12 is 12.0) # result: False

12랑 12.0은 유효 숫자가 다르니까 다른 값 같기도 하고, 그냥 같은 값 같기도 하다.

 

 

부정의 비교 연산자와 논리 연산자로 표현하면 다음과 같다.

print(12 != 12.0) # result: False
print(12 is not 12.0) # result: True

 

 

이유를 말하자면,

 

- 비교 연산자 (==, !=, <, >, <=, >= 등)는 주어진 값 자체를 비교한다.

  그래서 12 == 12.0은 같은 값을 나타내므로 True를 반환한다.

 

- 논리 연산자 (is, is not 등)은 객체인 object를 비교하는 것이기 때문에, 위와 같이 12, 12.0의 값은 다르다고 판단한다.

728x90