토막코딩/Python

Python에서 'is'와 '==' : 무엇이 다른가?

컴곰 2023. 9. 26. 07:50

Python에서 is==: 무엇이 다른가?


Python 개발을 하다보면, 객체를 비교할 때 is== 두 연산자를 모두 볼 수 있습니다. 그러나 이 두 연산자는 매우 다른 비교를 수행합니다. 이 차이점을 명확히 이해하는 것은 중요한데, 코드의 버그를 예방하고, 프로그램의 동작을 정확히 이해하기 위해서입니다.

==: 값의 동일성 (Equality)

== 연산자는 두 객체의 이 동일한지를 검사합니다.

list1 = [1, 2, 3]
list2 = [1, 2, 3]

print(list1 == list2)  # True

위의 예제에서 list1list2는 다른 메모리 위치에 있는 별도의 리스트 객체입니다. 그러나 그들의 은 동일하기 때문에 list1 == list2True를 반환합니다.

is: 객체의 동일성 (Identity)

is 연산자는 두 객체가 동일한 객체인지, 즉 메모리 상에서 같은 위치에 있는지를 검사합니다.

list1 = [1, 2, 3]
list2 = list1  # list2는 list1과 동일한 객체를 참조

print(list1 is list2)  # True

위의 예제에서 list1list2는 같은 리스트 객체를 참조하므로 list1 is list2True를 반환합니다.

주의 사항

일반적으로 값의 비교에는 ==를, 객체의 동일성 비교에는 is를 사용하는 것이 좋습니다. 특히, 기본 데이터 타입인 None, True, False와 같은 경우에는 is 연산자를 사용하는 것이 권장됩니다.

x = None

if x is None:
    print("x is None")

이 연산자들 사이의 차이점을 이해하면, 코드의 동작 방식에 대한 깊은 인사이트를 얻을 수 있으며, 잠재적인 오류를 피할 수 있습니다.