-
(python)'is None'과 '==None'의 차이점Programming/python 2020. 2. 27. 16:25
특정한 값이 있는지를 검사할 때 자주 사용하게 되는 문법인 is None과 ==None.
값이 넘어오고나 전처리 과정에서 이 값이 존재하는지를 확인하고 싶을 때 주로 사용하게 된다.
http://jaredgrubb.blogspot.com/2009/04/python-is-none-vs-none.html
간단하게 요약해서 설명하자면 True로 받을지 그 자체를 받을지의 문제다.
class Noo: def __eq__(self,other): return True Noo=Noo() print(Noo==None) # True print(Noo is None) # False
Noo는 None 오브젝트를 상속받는다. 비교 연산자는 Noo를 None으로 받아서 True로 처리하지만 is None 은 오브젝트 그 자체로 받아서 False로 처리한다.
커스텀 비교 연산자가 드물게 사용되는 이래로 이것은 별 차이점이 없어보인다. 하지만 is None 을 사용하는 것이 좀더 대중적인 방식이다.
또한, is None 은 ==None 에 비해서 약 50퍼센트 정도 미세하게 더 빠르다.
>>> timeit.Timer('None is None').timeit() 0.225 >>> timeit.Timer('None == None').timeit() 0.328
PEP8 스타일 가이드
게다가 파이썬 코딩 컨밴션인 PEP(Python Enhance Proposal)8에서는 if number == None 보다는 if number is None 과 같은 방법을 더 권장한다.
필요하다면 무시할 수 있지만 더 읽기 쉬운 코드의 방식을 권장하고 있다.
PEP 8 -- Style Guide for Python Code
결론
is None 또는 is not None 을 사용하도록 하자
'Programming > python' 카테고리의 다른 글
[python]str을 dict로 바꾸는 두 가지 방법 (2) 2021.01.24 파이썬 제너레이터(Generator) (0) 2020.06.06 (python)날짜로 파일 제목 만들기 (0) 2019.12.09 큐와 스택은 무엇인가 (0) 2019.11.03 [python]버블 정렬 (0) 2019.10.20