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でない場合の処理
isと==の違い
isによってNoneを判定する方法を紹介しましたが、通常2つのオブジェクトを比較する場合は比較の==演算子を使用することが多いです。
Pythonでは、==はオブジェクトの値同士が同じであるか(同値性)を比較し、isはオブジェクト自体が同じものであるか(同一性)を比較します。
例えば、以下のような同じ中身のリストがあります。
list1 = [1, 2, 3]
list2 = [1, 2, 3]
同じ中身の2つのリストに対して、==とisでそれぞれ2つのリストを比較します。
print(list1 == list2)
print(list1 is list2)
結果は下記の通りです。
- True
- False
==では、2つのリストの要素がまったく同じであるため、Trueが返されます。一方で中身が同じでもlist1, list2という別のオブジェクトであるため、isで判定した場合はFalseになります。
また、==での同値性の判定基準はクラスによって変わる場合があり、判定はisのほうが高速である特徴があります。Noneかどうかを判定したい場合は、判定の厳密性や処理速度の面からisの使用が推奨されます。