난 그냥 발생 논리 값의 동등성을 테스트 할 때 다음과 파이썬의 행동에 대해 궁금 : 특히주문
>>> x = 1
>>> x in range(2)
True
>>> type(x in range(2))
<type 'bool'>
>>> x in range(2) == True
False
>>> x in range(2) == False
False
>>> (x in range(2)) == True
True
, 왜 (1 in range(2)) == True
이 True
평가하고 l in range(2) == True
이 False
로 평가합니까? 당신은 순서가 명시 적으로 잘못 할 경우, 당신은 TypeError
얻을 것을 제외하고, 후자의 평가 행동의 이상한 순서가있는 것 같습니다 : 기록을 위해
>>> x in (range(2) == True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: argument of type 'bool' is not iterable
을 나는 어떤 경우를 모르는, 어디 단지 x in range (2)
대신 x in range(2) == True
을 사용 하겠지만, 왜 이런 일이 일어나고 있는지 알고 싶을 것입니다. 또한 Python2.7과 Python3 모두에서 이것을 테스트했으며 동작은 같습니다.
좋은 통찰력! 웬일인지 다른 통신 수와 연계 될 수 있다고는 생각하지 못했습니다. – mdml