Published on

파이썬 is 와 == 차이점

Authors
  • avatar
    Name
    devnmin
    Twitter

Python is vs == 차이점

파이썬에서는 두 개의 변수를 비교할 때 is와 ==를 사용할 수 있습니다. 하지만 두 연산자는 비교하는 대상이 다릅니다.

1. is (객체 동일성 비교)

  • is는 **객체의 메모리 주소(객체 ID)**를 비교합니다.
  • 두 변수가 같은 객체를 참조하는지 확인할 때 사용됩니다.
a = [1, 2, 3]
b = a  # 같은 객체를 참조
c = [1, 2, 3]  # 새로운 리스트 객체 생성

print(a is b)  # True (a와 b는 동일한 객체)
print(a is c)  # False (a와 c는 값은 같지만, 다른 객체)

2. == (값 비교)

  • ==객체의 값을 비교합니다.
  • 객체의 메모리 주소가 다르더라도 값이 같다면 True를 반환합니다.
a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a == b)  # True (a와 b는 같은 객체이므로 값도 같음)
print(a == c)  # True (a와 c는 다른 객체지만, 값이 같음)

3. is를 사용하면 안 되는 경우

일부 작은 정수와 문자열은 파이썬 내부에서 캐싱되어 같은 객체로 처리됩니다. 하지만 모든 숫자와 문자열이 같은 객체는 아니므로, 값 비교에는 ==를 사용하는 것이 안전합니다.

a = 256
b = 256

print(a is b)  # True (-5 ~ 256까지는 같은 객체 재사용)

a = 257
b = 257

print(a is b)  # False (257은 새로운 객체로 할당됨)

4. None 비교 시 is 사용하기

특정 객체, 특히 None 을 비교할 때는 is를 사용하는 것이 좋습니다.

x = None
if x is None:  # ✅ 올바른 사용법
    print("x는 None입니다.")

5. is vs == 정리

연산자비교 대상설명
is객체 ID두 변수가 동일한 객체인지 비교 (메모리 주소 비교)
==두 객체의 값이 같은지 비교

📌 결론

  • 값을 비교할 때는 ==를 사용하세요.
  • 객체가 동일한지 확인할 때는 is를 사용하세요.
  • None과의 비교는 항상 is None을 사용하세요.

이제 is==의 차이를 확실히 이해하고, 적절한 상황에서 올바르게 사용해 보세요! 🚀