728x90
반응형
파이썬으로 코드를 작성하다가 어떤 함수 a 의 리턴값과 None 타입을 비교하는 if문을 작성했다.
처음에는 아무 생각 없이 == 으로 작성했다가,
생각해보니까 PEP8 에 의하면 None 과의 비교는 is 가 적합할 것 같아서 급하게 수정했다.
근데 왜 바꿔야하는지, 더 나아가 == 이나 != 연산자가 이미 있는데
왜 is 와 is not이 있어야하는건지 궁금해서 좀 서칭을 해봤다.
우선 아래 코드를 실행해보자.
아주 간단하다.
print(3 == 3.0)
print(3 is 3.0)
실행 결과는 True 와 False.
분명 동일한 역할을 하는 연산자 같은데, 왜 두 개의 연산 결과가 다른 걸까?
일단 == 과 != 는 값 자체를 비교하고,
is 와 is not은 객체를 비교한다.
3과 3.0은 어쨌든 같은 값을 가지니 True가 나온 것이지만,
정수객체와 실수객체는 분명하게 다르기에 False가 나온 것이다.
요즘은 아예 ide 에서 이런 경고메시지가 뜨기도 한다.
SyntaxWarning: "is" with a literal. Did you mean "=="?
is 를 값 비교에 쓰지 말라는 경고 문구다.
is 는 True나 False, None 과 비교할 때만 사용하자!
728x90
반응형
'Archive > Develop' 카테고리의 다른 글
주석(comment) (0) | 2021.12.14 |
---|---|
[ Python ] 파이썬 스케줄러 작성하기(APScheduler) - BlockingScheduler | 파이썬 반복 작업 수행 (1) | 2021.12.14 |
시스템 동작 방식 - Polling VS Event (0) | 2021.12.10 |
[ SVN ] 내가 보려고 쓰는 SVN 명령어 (0) | 2021.12.08 |
[ Python ] 파이썬 비동기 처리 | asyncio | 비동기란 무엇인가 | 비동기 예제 (2) | 2021.12.08 |