모든 것이 없을 것 같습니까? [복제하다
-
19-09-2019 - |
문제
이 질문은 이미 여기에 답이 있습니다.
파이썬 내장 데이터 유형이 있습니까? 뿐만 아니라 None
, 무엇을 위해 :
>>> not foo > None
True
어디 foo
해당 유형의 값입니까? Python 3은 어떻습니까?
해결책
None
Python 2의 데이터 타입보다 항상 더 적습니다 (참조 object.c
).
Python 3에서 이것은 변경되었습니다. 이제 현명한 자연 순서가없는 일을 비교하는 것은 TypeError
. 로부터 3.0 "새로운 것"업데이트:
Python 3.0은 비교를위한 규칙을 단순화했습니다.
순서 비교 연산자 (
<
,<=
,>=
,>
) aTypeError
피연산자에 의미있는 자연 순서가 없을 때 예외. 따라서 : 다음과 같은 표현.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;
...
}
편집하다: 추가 버전 번호.