2020. 2. 27. 16:25

(python)'is None'과 '==None'의 차이점

특정한 값이 있는지를 검사할 때 자주 사용하게 되는 문법인 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' 카테고리의 다른 글

파이썬 제너레이터(Generator)  (0) 2020.06.06
(python)'is None'과 '==None'의 차이점  (0) 2020.02.27
(python)날짜로 파일 제목 만들기  (0) 2019.12.09