Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 |
Tags
- C#
- 몽골여행
- 블라디보스토크
- 그래픽노블
- 워킹데드
- Python
- 스팀
- 퍼즐게임
- API
- 중국맛집
- flask
- 먹방
- https
- pycon
- 컴퓨터네트워크
- certbot
- FPS
- 파이썬
- lambda
- AWS
- 인디게임
- 게임
- 프로젝트오일러
- 우분투
- Project Euler
- django
- coursera
- github
- 알고리즘
- codility
- Today
- 19
- Total
- 323,616
YUDA't
[python] is 와 == 의 차이점 본문
나는 비교 대상이 None이 아닌 이상 대체로 ==를 사용하기 때문에 이 둘의 차이점을 깊게 생각해본 적이 없다.
근데 오늘 스택오버플로우를 서핑하다가 이와 관련된 글이 눈에 띄어서 읽어봤는데 재밌었다.
is는 reference equality. 메모리 상의 두 object를 비교한다.
두 reference가 같은 object를 가리키는지 확인할 수 있다.
==는 value equality. 값을 비교한다.
두 object가 같은 값을 가지는지 알 수 있다.
예시를 보자.
>>> foo = 10 >>> dir(foo) == dir(10) True >>> dir(foo) is dir(10) False
동일한 변수의 dir()을 가져왔음에도 이들은 같은 값을 가질 뿐, 같은 object는 아니기 때문에
is로 비교할 시, False를 리턴한다.
또 하나 재미있는 점은,
파이썬에는 -5부터 256까지의 수가 캐싱되어 있어 이들 값을 가진 변수들은 같은 object로 간주된다는 것이다.
>>> a = 256 >>> b = 256 >>> a == b True >>> a is b True
>>> a = 257 >>> b = 257 >>> a == b True >>> a is b False
신기!
'개발 > python' 카테고리의 다른 글
[Python] Python으로 SMS 보내는 방법 (1) | 2019.02.08 |
---|---|
<파이썬; 코딩의 기술> 파이썬다운 생각 (0) | 2019.02.07 |
[python] print와 return의 차이점 (0) | 2017.10.27 |
[python] Python을 web에서 컴파일하는 여러 가지 방법 (0) | 2017.09.13 |
[python] 제너레이터(Generator) (0) | 2017.09.12 |
- Tag
- Python
0 Comments