출처: 파이썬 알고리즘 인터뷰, 박상길
- 파이썬의 비교연산자 중 is와 ==가 있다.
- 이 둘은 파이썬의 객체 구조와 관련이 깊다.
is
- id() 값을 비교하는 함수이다.
- None은 null로서 값 자체가 정의되어 있지 않으므로 ==로 비교불가하다.
if a is None:
pass
==
- 값을 비교하는 연산자이다.
예시
a = [1, 2, 3]
a == a # True
a == list(a) # True
a is a # True
a is list(a) # False
값은 동일하지만 list()로 한 번 더 묶어주면, 별도의 객체로 복사되고 다른 id를 갖게 된다.
따라서 is는 False가 된다.
a = [1, 2, 3]
a == copy.deepcopy(a) # True
a is copy.deepcopy(a) # False
copy.deepcopy()로 복사한 결과 또한 값은 같지만 ID는 다르기 때문에, ==로 비교하면 True, is로 비교할 경우 False가 된다.
'프로그래머 > Python' 카테고리의 다른 글
[Python] Leet Code 125 : Valid Palindrome 풀이 및 분석 (0) | 2021.02.03 |
---|---|
[Python] 딕셔너리(dictionary) | Ordereddict(), defaultdict(), Counter() (0) | 2021.02.01 |
[Python] print | .join() | f-string (0) | 2021.01.31 |
[Python] range | generator의 방식을 활용하는 대표적 함수 (0) | 2021.01.31 |
[파이썬] 타입 힌트 | Type Hint | PEP 484 (0) | 2021.01.31 |