None の型は NoneType です。
>>> type(None) <type 'NoneType'>
上記のように、None が NoneType であるというのは明らかな事実なのですが、NoneType を明示的に使おうとするとエラーになってしまいます。
>>> n = None # NoneType を直接使う >>> isinstance(n, NoneType) Traceback (most recent call last): File "<stdin>", line 1, inNameError: name 'NoneType' is not defined
理由はよく分かりませんが、NoneType は直接使用できないようになっているようです。None チェックするには is None とすべき、という指針への暗黙の推奨なのかもしれません。
とは言え、NoneType を使いたい場合もあります。そのためには、type(None) と書く必要があります。
# type(None)を使用 >>> isinstance(n, type(None)) True # type(None)を一旦変数に代入 >>> MyNoneType = type(None) >>> isinstance(n, MyNoneType) True
参考までに、Python 2 では typesライブラリの中に、NoneType が定義されていました。
# Python 2 >>> import types >>> isinstance(None, types.NoneType) True
0 件のコメント:
コメントを投稿