すべては「なし」よりも優れていますか?[重複]
-
19-09-2019 - |
質問
この質問にはすでに答えがあります:
- Pythonで負の無限大より小さい数は? 1 件の回答
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;
...
}
編集:バージョン番号を追加しました。
所属していません StackOverflow