1. ホーム
  2. python

すべては「なし」より大きいか?

2023-11-01 06:47:45

質問

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 < NoneTypeError を返す代わりに False . その結果、異種リストのソートはもはや意味を成さなくなります - すべての要素が互いに比較可能でなければなりません。これは ==!= 演算子:異なる比較可能な型のオブジェクトは、常に互いに不等間隔で比較されます。

を持つリストをソートするのに便利だったので、これは一部の人々を動揺させました。 None の値を持つリストをソートし、その中の None の値が先頭または末尾にまとまって表示されます。 メーリングリストにこの件に関するスレッドがありました。 というスレッドがありましたが、究極のポイントは、Python 3 は順序について恣意的な決定をしないようにしようとしていることです (Python 2 ではよくあったことです)。