onlybooks / python-algorithm-interview

<파이썬 알고리즘 인터뷰> 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트
1.22k stars 325 forks source link

118 페이지 "is와 ==" 설명에 질문 있습니다. #95

Open comjang2 opened 3 years ago

comjang2 commented 3 years ago

좋은 책 감사합니다. 책을 보던 중 궁금한 사항이 있어 글을 작성합니다. 118 페이 "is와 ==" 설명을 보면, "None은 널(null)로서 값 자체가 정의되어 있지 않으므로 ==로 비교가 불가능하다"라고 되어 있는데, 어떤 의미인지 잘 이해가 되질 않습니다.

== 로 None을 비교하면 문법 에러가 나거나 동작 오류가 나는 설명인가 하여, 아래와 같은 연습 코드를 작성해 보니 정상적으로 "None"이 출력됩니다.

a = None print("None") if a == None else print("Not none")

"None은 비교가 불가능하다"는 것이 어떤 의미인지 추가 설명 부탁드립니다.

likejazz commented 3 years ago

최근에 파이썬 컴파일러는 ==도 동작하도록 지원은 합니다. 아마 편의상 지원하는 것으로 보입니다.
그러나 PEP 8을 보면,

Comparisons to singletons like None should always be done with is or is not, never the equality operators.
https://www.python.org/dev/peps/pep-0008/

동등 연산자(equality operators)로 비교하지 못하도록 분명히 명시하고 있습니다.