왜 (1 in [1,0] == True) 는 False 일까요?


발생하는 문제 및 실행환경

(1 in [1,0] == True)가 어떻게 구문분석 되는질 모르겠어서 나름대로 시도해봤는데

>>> 1 in [1,0]             # 원래 그런거니까..
True
>>> 1 in [1,0] == True     # 이상함
False
>>> (1 in [1,0]) == True   # 이렇게 구문 분석 될거라 생각했습니다
True
>>> 1 in ([1,0] == True)   # 에러

4번째 코드에서 에러내용

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    1 in ([1,0] == True)
TypeError: argument of type 'bool' is not iterable
  • 2016년 02월 16일에 작성됨

조회수 178


1 답변


좋아요
0
싫어요
채택취소하기

파이썬은 이런 구문을 보면 보통 chained comparisons를 합니다.

(1 in [1,0] == True)는 사실

(1 in [1, 0]) and ([1, 0] == True)

와 같기 때문에 False가 되는 거지요.

자세한 건

이미 이쪽 질문 [왜 파이썬 (0 < 0 == 0)는 False를 return하나요?]에 대답해놨습니다.

  • 2016년 02월 16일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close