this question에 대한 답을 볼 때, 나는 내 대답을 이해하지 못했다.([1,0] == True의 1)이 False로 평가되는 이유는 무엇입니까?
저는 이것이 어떻게 파싱되는지 이해하지 못합니다. 두 번째 예제가 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
도움 주셔서 감사합니다. 나는 정말로 명백한 무엇인가를 놓쳐 버려야 만한다고 생각한다.
나는이 링크 중복에 미묘하게 다른 생각 :
Why does the expression 0 < 0 == 0 return False in Python?.
두 가지 질문은 표현에 대한 인간의 이해와 관련이 있습니다. 표현을 평가하는 두 가지 방법이 내 마음에 들었다. 물론 올바른 것은 아니지만 나의 예에서는 마지막 해석이 불가능합니다. 0 < 0 == 0
보면
식에서 각 평가되고 절반 만드는 감각을 상상할 수 :이 False
평가하는 이유
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
그래서 링크 답변 :
>>> 0 < 0 == 0
False
하지만 내 예를 1 in ([1,0] == True)
아무튼와 표현으로 이해할 수 없으므로 가능한 해석이 2 가지 (틀린 것은 틀림)가 아니라 하나만 가능하다.
>>> (1 in [1,0]) == True
연산자 우선 순위 ...'=='는'in'보다 더 엄격하게 바인딩하므로'[1,0] == True'가 먼저 평가되고 그 결과는 other_result에서'1 '로 지정됩니다. –
파이썬 3.2가 같은 방식으로 동작하기 때문에 파이썬 2.7 태그를 제거했습니다. – lvc
@Marc B : 두 번째 표현 인 –