이 질문 에 대한 답변을 볼 때 내 답변을 이해하지 못하는 것으로 나타났습니다.
나는 이것이 어떻게 파싱되고 있는지 이해하지 못한다. 두 번째 예가 False를 반환하는 이유는 무엇입니까?
>>> 1 in [1,0] # This is expected
True
>>> 1 in [1,0] == True # This is strange
False
>>> (1 in [1,0]) == True # This is what I wanted it to be
True
>>> 1 in ([1,0] == True) # But it's not just a precedence issue!
# It did not raise an exception on the second example.
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
도움을 주셔서 감사합니다. 나는 정말로 명백한 것을 놓치고 있어야한다고 생각합니다.
나는 이것이 연결된 복제본과 미묘하게 다르다고 생각합니다.
파이썬에서 표현식 0 <0 == 0이 False를 반환하는 이유는 무엇입니까? .
두 가지 질문 모두 표현에 대한 인간의 이해와 관련이 있습니다. 표현을 평가하는 두 가지 방법이 있습니다 (제 생각에는). 물론 정확하지는 않았지만 제 예제에서는 마지막 해석이 불가능합니다.
를 보면 0 < 0 == 0
평가되는 각각의 절반을 상상할 수있는 당신과 표현으로 이해하기 :
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
따라서 링크는 이것이 왜 평가되는지에 대한 답변입니다 False
.
>>> 0 < 0 == 0
False
그러나 내 예 1 in ([1,0] == True)
는 표현으로 이해가되지 않으므로 가능한 두 가지 해석이 가능하지만 한 가지만 가능합니다.
>>> (1 in [1,0]) == True
Python 3.2는 동일한 방식으로 작동하므로 Python-2.7 태그를 제거했습니다.
—
lvc
@Marc B는 : 두 번째 표현 설명하지 않습니다
—
스콧 헌터
@MarcB, 질문에는 그 해석을 반증하기 위해 괄호를 사용한 테스트가 포함되었습니다.
—
Mark Ransom
==
보다 더 바인딩 엄격한in
, 그래서[1,0] == True
그 결과가 공급됩니다, 먼저 평가됩니다1 in other_result
.