Pythonでは、特定のオブジェクトがNoneであるかどうかを判定するための方法があります。これは、特に関数の戻り値がNoneであるかどうかを確認する際に有用です。
Noneとは
Pythonにおける「None」とは、「値が存在しない状態」のことを表す組み込み定数です。他のプログラミング言語ではデータが存在しない場合は「null」という語句を使うこともあります。
Noneかどうかを判定する方法
Pythonにおける処理のときには、Noneオブジェクトを使うとエラーが生じる場合もあります。そのために、処理を行う前にNoneかどうかを確認する必要が生じてきます。
Noneを確認するためには、if文とis演算子を使います。is演算子は2つのオブジェクトが一致しているかどうかを比較するための演算子で、次のように記述します。
オブジェクト is None
すると、以下のように返されます。
- オブジェクトがNoneのとき→True
- オブジェクトがNoneでないとき→False
よって、以下のようにis演算子とif文を組み合わせて記述すれば、Noneをそのまま処理したときのエラーを回避できます。
if オブジェクト is None:
# Noneだった場合の処理
else:
# Noneでない場合の処理
None判定におけるisと==の違い
isによってNoneを判定する方法を紹介しましたが、通常2つのオブジェクトを比較する場合は比較の==演算子を使用することが多いです。
Pythonでは、==はオブジェクトの値同士が同じであるか(同値性)を比較し、isはオブジェクト自体が同じものであるか(同一性)を比較します。
Noneかどうかを判定したい場合は、判定の厳密性や処理速度の面からisの使用が推奨されます。
実際に書いてみよう
それでは、実際にコードを書いて、Noneであるかどうかを確認してみましょう。
result = get_value()
if result is None:
print("error parsing stream")
elif result:
print("result pass")
else:
print("result fail")
このコードは、get_value()
関数の戻り値がNoneであるかどうかを判定し、それに応じて異なるメッセージを出力します。このように、PythonではNoneの判定を行うための簡潔で効率的な方法が提供されています。