- Published on
파이썬 is 와 == 차이점
- Authors
- Name
- devnmin
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
와 ==
의 차이를 확실히 이해하고, 적절한 상황에서 올바르게 사용해 보세요! 🚀