以外None
に、Python 組み込みデータ型はありますか?
>>> not foo > None
True
foo
その型の値はどこにありますか? Python3はどうですか?
以外None
に、Python 組み込みデータ型はありますか?
>>> not foo > None
True
foo
その型の値はどこにありますか? Python3はどうですか?
None
は常に Python 2 のどのデータ型よりも小さくなります (「 」を参照object.c
)。
Python 3 では、これが変更されました。賢明な自然な順序付けなしで物事を比較すると、TypeError
. 3.0 の「新機能」の更新から:
Python 3.0 では、比較の順序付けのルールが簡素化されました。
順序比較演算子 (
<
、<=
、>=
、>
)TypeError
は、オペランドに意味のある自然な順序がない場合に例外を発生させます。したがって、:1 < ''
や0 > None
orのような式len <= len
はもはや有効ではなく、たとえば、を返す代わりに発生さNone < None
せます。当然のことながら、異種のリストをソートすることはもはや意味がありません。すべての要素が互いに比較可能でなければなりません。これはand演算子には適用されないことに注意してください。異なる比較不可能な型のオブジェクトは、常に互いに比較すると等しくありません。TypeError
False
==
!=
None
いくつかの値を含むリストを並べ替えたり、None
値を最初または最後にまとめて表示したりするのは便利なことが多いため、これは一部の人々を混乱させました。しばらく前にこれについてメーリング リストにスレッドがありましたが、究極のポイントは、Python 3 が順序付けに関して恣意的な決定を回避しようとしているということです (これは Python 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;
...
}
編集:バージョン番号を追加しました。