문제

이 질문은 이미 여기에 답이 있습니다.

파이썬 내장 데이터 유형이 있습니까? 뿐만 아니라 None, 무엇을 위해 :

>>> not foo > None
True

어디 foo 해당 유형의 값입니까? Python 3은 어떻습니까?

도움이 되었습니까?

해결책

None Python 2의 데이터 타입보다 항상 더 적습니다 (참조 object.c).

Python 3에서 이것은 변경되었습니다. 이제 현명한 자연 순서가없는 일을 비교하는 것은 TypeError. 로부터 3.0 "새로운 것"업데이트:

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

순서 비교 연산자 (<, <=, >=, >) a TypeError 피연산자에 의미있는 자연 순서가 없을 때 예외. 따라서 : 다음과 같은 표현. 1 < '', 0 > None 또는 len <= len 더 이상 유효하지 않습니다 None < None 제기 TypeError 돌아 오는 대신 False. 결론은 이기종 목록을 분류하는 것이 더 이상 의미가 없다는 것입니다. 모든 요소는 서로 비교할 수 있어야합니다. 이것은 적용되지 않습니다 == 그리고 != 연산자 : 비교할 수없는 다른 유형의 객체는 항상 서로 비교할 수 없습니다.

이것은 종종 일부 사람들이있는 목록과 같은 일을하는 것이 편리했기 때문에 어떤 사람들을 화나게했습니다. None 그 안에 값을 가지고 있습니다 None 값은 처음이나 끝에서 함께 클러스터링됩니다. 메일 링리스트에 이에 대한 스레드가있었습니다. 얼마 전, 궁극적 인 요점은 Python 3이 주문에 대한 임의의 결정을 피하려고 시도한다는 것입니다 (Python 2에서 많은 일이 발생했습니다).

다른 팁

파이썬에서 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;
    ...
}

편집하다: 추가 버전 번호.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top