Python의 연쇄 비교: 0의 미스터리 풀기 < 0 == 0 거짓
Python의 표준 라이브러리 코드 깊숙한 곳에 Python 2.6의 Queue.py에 수수께끼 같은 구문이 있습니다:
def full(self): """Return True if the queue is full, False otherwise (not reliable!).""" self.mutex.acquire() n = 0 < self.maxsize == self._qsize() self.mutex.release() return n
왜 이 표현식을 사용합니까, 0 < 0 == 0, 거짓을 산출합니까? 0은 확실히 0보다 작고 0 == 0은 참이기 때문에 언뜻 보면 직관에 어긋나는 것처럼 보입니다.
연결된 비교: Python의 단축키
Python에는 범위 비교를 더욱 간결하게 표현하는 "연쇄 비교"라는 고유한 기능입니다. 예를 들어, 다음은 연결 비교를 사용하는 것과 동일합니다.
0 < x <= 5
내부적으로 이러한 연결 비교는 다르게 해석됩니다. Python은 왼쪽에서 오른쪽으로 표현식을 평가하고 False로 평가되는 첫 번째 비교 값을 반환합니다. 우리의 경우에는 0 < 0은 False로 평가되므로 후속 == 0 평가는 관련이 없으므로 표현식은 False를 반환합니다.
반대로 괄호가 도입되면 그 안에 있는 표현식의 평가가 다음 평가 전에 완료되도록 강제합니다. 비교가 적용됩니다. 이는 연결된 비교 동작을 무효화합니다. 결과적으로 괄호를 추가하면 예상되는 True 값을 얻습니다.
(0 < 0) == 0 0 < (0 == 0)
따라서 full() 메소드의 표현식 0 < self.maxsize == self._qsize(), self.maxsize가 0이면 False로 평가됩니다. 이는 크기 제한이 0으로 설정된 경우 대기열이 결코 가득 차지 않음을 나타냅니다.
위 내용은 Python에서 `0 < 0 == 0`이 `False`로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!