Pythonでは、Noneの判定にis==のどちらを使うべきかという疑問がよく出ます。この記事では、その違いと各々の使用場面について解説します。

Noneとは

まず、PythonにおけるNoneとは、「値が存在しない状態」のことを表す組み込み定数です。他のプログラミング言語ではデータが存在しない場合は「null」という語句を使うこともあります。

is==の違い

Pythonでは、==はオブジェクトの値同士が同じであるか(同値性)を比較し、isはオブジェクト自体が同じものであるか(同一性)を比較します。

例えば、以下のような同じ中身のリストがあります。

list1 = [1, 2, 3]
list2 = [1, 2, 3]

同じ中身の2つのリストに対して、==isでそれぞれ2つのリストを比較します。

print(list1 == list2)  # True
print(list1 is list2)  # False

==では、2つのリストの要素がまったく同じであるため、Trueが返されます。一方で中身が同じでもlist1, list2という別のオブジェクトであるため、isで判定した場合はFalseになります。

Noneの判定

Pythonにおける処理のときには、Noneオブジェクトを使うとエラーが生じる場合もあります。そのために、処理を行う前にNoneかどうかを確認する必要が生じてきます。

Noneを確認するためには、if文とis演算子を使います。is演算子は2つのオブジェクトが一致しているかどうかを比較するための演算子で、次のように記述します。

if object is None:
    # Noneだった場合の処理
else:
    # Noneでない場合の処理

このように、何もないことを表す場合に、Noneが使用されます。

まとめ

Pythonでは、Noneの判定にisを使うことが推奨されています。これは、isがオブジェクトの同一性を比較するため、Noneの判定においてはisの使用が厳密性や処理速度の面から推奨されます。また、is==の違いを理解することは、Pythonのコーディング規約を理解する上でも重要です。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です