Development Tip

모두 없음보다 큰가요?

yourdevel 2020. 11. 21. 09:10
반응형

모두 없음보다 큰가요?


이 질문에 이미 답변이 있습니다.

거기에 파이썬 내장 데이터 유형 외에None , 어떤을 위해 :

>>> not foo > None
True

foo그 유형의 값은 어디에 있습니까? 파이썬 3은 어떻습니까?


None항상 Python 2의 데이터 유형보다 작습니다 (참조 object.c).

Python 3에서는 변경되었습니다. 이제 합리적인 자연 순서없이 사물을 비교하면 TypeError. 로부터 업데이트 "새로운 기능"3.0 :

Python 3.0은 순서 비교 규칙을 단순화했습니다.

순서 비교 연산자 ( <, <=, >=, >) 인상 TypeError피연산자가 의미있는 자연 순서가없는 경우 예외를. 따라서, 식 같은 1 < '', 0 > None또는 len <= len더 이상 유효하지 않으며, 예를 들어 None < None올린다 TypeError대신 반환하는 False. 결과적으로 이기종 목록을 정렬하는 것은 더 이상 의미가 없습니다. 모든 요소는 서로 비교할 수 있어야합니다. 이는 ==!=연산자 에는 적용되지 않습니다 . 비교할 수없는 다른 유형의 객체는 항상 서로 같지 않은 상태로 비교됩니다.

일부 None이있는 목록을 정렬 하고 None값이 시작 또는 끝 부분에 함께 클러스터 된 것처럼 보이게 하는 것과 같은 작업을 수행하는 것이 종종 편리했기 때문에 일부 사람들은 화가났습니다 . 얼마 전에 메일 링리스트에 쓰레드가 있었지만, 궁극적 인 요점은 파이썬 3가 주문에 대한 임의의 결정을 내리는 것을 피하려고한다는 것입니다 (파이썬 2에서 많은 일이 일어났습니다).


Python 2.7.5 소스 ( object.c)에서 :

static int
default_3way_compare(PyObject *v, PyObject *w)
{
    ...
    /* None is smaller than anything */
    if (v == Py_None)
            return -1;
    if (w == Py_None)
            return 1;
    ...
}

편집 : 버전 번호가 추가되었습니다.

참고 URL : https://stackoverflow.com/questions/2214194/is-everything-greater-than-none

반응형