質問

この質問にはすでに答えがあります:

Python の組み込みデータ型はありますか? その上 None, 、そのために:

>>> not foo > None
True

どこ foo その型の値ですか?Python3はどうでしょうか?

役に立ちましたか?

解決

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値は、先頭または末尾に一緒にクラスタ化された表示されるようにするには、多くの場合、便利だったので

これは何人かの人々を混乱させる。スレッドの がありましたこれについてはメーリングリスト上をしばらく前に、しかし、究極のポイントは、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