Pythonでは、None
を判定する際にif not 変数
とif 変数 is not None
のどちらを使用するべきかがしばしば議論の対象となります。
None
とは
まず、PythonにおけるNone
とは、「値が存在しない状態」のことを表す組み込み定数です。他のプログラミング言語ではデータが存在しない場合は「null」という語句を使うこともあります。
if not 変数
とif 変数 is not None
の違い
if not 変数
とif 変数 is not None
は、それぞれ異なる状況で使用されます。
if not 変数
は、変数がFalse
、None
、空のリスト([]
)、空の文字列(''
)、ゼロ(0
)など、偽と評価される値の場合に真となります。
一方、if 変数 is not None
は、変数がNone
でない場合に真となります。つまり、変数がFalse
や空のリストなどの偽と評価される値でも、それがNone
でなければ真となります。
どちらを使用するべきか
None
を判定する目的が主なら、is None
やis not None
が自然でしょう。一方、変数が偽と評価される値(False
、空のリストなど)を判定する目的であれば、if not 変数
を使用します。
PEP8(Pythonのスタイルガイド)では、None
のようなシングルトンと比較をする場合は、常にis
かis not
を使うべきとされています。
以上、Pythonにおけるif not
とif is not None
の違いについて解説しました。適切なコーディングスタイルを身につけることで、より読みやすく、理解しやすいコードを書くことができます。