Python에서 is
와 ==
: 무엇이 다른가?
Python 개발을 하다보면, 객체를 비교할 때 is
와 ==
두 연산자를 모두 볼 수 있습니다. 그러나 이 두 연산자는 매우 다른 비교를 수행합니다. 이 차이점을 명확히 이해하는 것은 중요한데, 코드의 버그를 예방하고, 프로그램의 동작을 정확히 이해하기 위해서입니다.
==
: 값의 동일성 (Equality)
==
연산자는 두 객체의 값이 동일한지를 검사합니다.
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2) # True
위의 예제에서 list1
과 list2
는 다른 메모리 위치에 있는 별도의 리스트 객체입니다. 그러나 그들의 값은 동일하기 때문에 list1 == list2
는 True
를 반환합니다.
is
: 객체의 동일성 (Identity)
is
연산자는 두 객체가 동일한 객체인지, 즉 메모리 상에서 같은 위치에 있는지를 검사합니다.
list1 = [1, 2, 3]
list2 = list1 # list2는 list1과 동일한 객체를 참조
print(list1 is list2) # True
위의 예제에서 list1
과 list2
는 같은 리스트 객체를 참조하므로 list1 is list2
는 True
를 반환합니다.
주의 사항
일반적으로 값의 비교에는 ==
를, 객체의 동일성 비교에는 is
를 사용하는 것이 좋습니다. 특히, 기본 데이터 타입인 None
, True
, False
와 같은 경우에는 is
연산자를 사용하는 것이 권장됩니다.
x = None
if x is None:
print("x is None")
이 연산자들 사이의 차이점을 이해하면, 코드의 동작 방식에 대한 깊은 인사이트를 얻을 수 있으며, 잠재적인 오류를 피할 수 있습니다.