> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 `0 < 0 == 0`이 `False`로 평가되는 이유는 무엇입니까?

Python에서 `0 < 0 == 0`이 `False`로 평가되는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-09 03:27:12
원래의
711명이 탐색했습니다.

Why Does `0 < 0 == 0` Evaluate to `False` in Python?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿