MB blog

こちらは主に自分用のメモです。

Python の Null チェック


スポンサードリンク

Python の NoneType


Java などでは戻り値が空だった時、

str != null

のようにして Null チェックを行います。
一方で静的型付け言語である Python は、戻り値を受け取る時にも型を指定しないので、ある関数を呼んで戻りの値が空だった時は NoneType という型を返します。

NoneType どうかの判定方法

前述のどのデータ型であっても、以下のやりかたで None であるかどうかの判定をすることができます。

if obj is None:
  print("None")

Python のコード規約的には if obj == None: とは書かず、None 判定には is を使うようです。

型はあるけど値が入ってない、の判定方法

NoneType 型ではないけれど、値が入ってないということもあります。
str の "" をはじめとして、整数の0、浮動小数の 0.0、bool の False、あらゆるコレクション型(リスト、タプル、ディクショナリ、セット)の中身が空、などなど。
例えばコレクションだと、他の言語だと list の length をとってそれが 0 以上かどうか... みたいなことをすると思うのですが、Python はシンプル。
if になんの演算子もつけなければ、その変数に何かしらの値が入っているときに True 、そうじゃないときに Falseを戻します。

if obj:
  print ("Not null")

この省略形、はじめは気持ち悪いけど、コードも短くなり結構合理的。
否定バージョン。

if not obj:
  print ("Null")