기본 자료 구조들링크드 리스트링크드 리스트 추가 연산

Q

Linkedlist 강의 코드 질문: is None

조회 311

좋아요 0

2022년 7월 20일




A
1개의 답변이 있어요
커뮤니티 파트너 채택



2022년 7월 20일

댓글 6

2022년 7월 20일
그래서 == 대신 is 를 저기서 쓰는 이유가 무엇인가요?
2022년 7월 20일
None 은 singleton 객체라는 것으로 프로그램이 실행될 때 유일한 객체로 존재합니당. 쉽게 말하면 사용되는 모든 메모리 주소 중에 한 곳에만 위치하게 되는거죠. a = None b = None 과 같이 할당하더라도 id(a), id(b) 를 확인해보시면 항상 같은 값을 나타냅니다. 동일한 값이야 메모리 곳곳에 위치할 수 있지만, None 은 유일하기 때문에 값을 비교하기 위한 == 을 쓰는게 아니라 그 성격에 맞게 identity를 확인하기 위한 is 를 씁니다. 이는 pep8 에서도 권장하고 있습니다. https://peps.python.org/pep-0008/#programming-recommendations
2022년 7월 20일
"동일한 값이야 메모리 곳곳에 위치할 수 있지만" 이 이해가지 않습니다. 방금 막 x = 12 y = 12 # x is y print(id(x)) print(id(y)) 를 돌려봤는데 x,y 는 같은 값이고, 같은 메모리를 가리키고 있습니다.
2022년 7월 21일
움.. 이건 또 설명을 드려야 하는데, 파이썬 내부적으로 자주 사용할 수 있는 작은 숫자는 최적화를 위해 특정 메모리 주소에 보관하게 됩니당. https://heeseok-jeong.github.io/2021/01/20/python-interning.html 를 참고해보세용!
2022년 7월 21일
음 그럼 혹시 is 대신 == 를 써야하는 이유에 대해 생각해보면 어떨까요? 두개중 하나가 다른 하나의 상위 호환아리던가 그런 관계에선 의미있을 수 있지만 두개가 하는 역할이 다른데 왜 쓰냐는 질문에 답변을 드리기가 좀 어렵네요 ㅠ
2022년 7월 27일
두분 다 감사합니다:) 음 .. 여기서 None 을 비교할 때 is 를 쓰는건 이해가 가는데, None 이 아닌 다른 두 가지 어떤 걸 비교하게 될 땐 또 고민할 것 같네요 ㅜ

(주) 코드잇

대표강영훈

개인정보보호책임자강영훈

이메일support@codeit.kr

사업자 번호313-86-00797

통신판매업제 2019-서울중구-1034 호

주소서울특별시 중구 청계천로 100 시그니쳐타워 동관 10층 코드잇