文字列処理

[Python] nullを判定する方法をわかりやすく解説

今回は、Pythonでnullを判定する方法についてご紹介します。

Pythonにおけるnullとは?

Pythonにはnullに相当する値としてNoneが存在します。

Noneは変数が値を持っていない状態や、関数が何も返さない場合などを表すために使われます。

たとえば、未初期化の変数を扱うときや、何も値を返さない関数の戻り値を受け取るときなどに登場します。

Noneを判定する方法

Noneを正確に判定する場合、Pythonではisを使うのが一般的です。

これは、Noneがシングルトン(唯一のオブジェクト)であるため、同じオブジェクトかどうかを確認するisが最適だからです。

実行結果

xはNoneです

このようにif x is None:で判定すると、他の値(空文字や0など)と明確に区別できます。

逆に「Noneではない」ことを判定したい場合は、if x is not None:のように書きます。

is と == の違い

Pythonではis==は明確に役割が異なります。

  • is:オブジェクトの同一性を判定する
  • ==:オブジェクトの値が等しいかどうかを判定する

Noneはすべて同じオブジェクトを参照しているため、isで比較することが安全です。

等価演算子==を用いると、ユーザー定義クラスで__eq__が独自実装されている場合などに、予期しない結果を生む可能性があります。

よくあるエラー例

Pythonでnullというキーワードを使おうとして、エラーが発生するケースがあります。

Pythonにはnullという予約語は存在せず、代わりにNoneを使う必要があります。

実行結果

NameError: name ‘null’ is not defined

また、if not x:のように書くと、xがNoneに限らずFalseと評価される値(0、空文字、空リストなど)にも該当します。

厳密にNoneだけを判定したい場合は、if x is None:が推奨されます。

まとめ

Pythonでnullに相当するNoneを判定するにはisを使います。

等価演算子==ではなく、オブジェクトの同一性をチェックできるisを用いるのが安全です。

「if not x:」はNone以外のFalsyな値とも区別がつかないため、厳密な判定には向きません。