当サイトは、アフィリエイト広告を利用しています

【Python】PythonでのNoneの正しい判定方法~ifとif notの使い分け~

作成日:2025月08月23日
更新日:2025年08月23日

Pythonでは「null」はなく、同じ意味として「None」が使われる。 PythonにおけるNoneチェックの方法をまとめておく

当記事では

  • Noneチェック
  • 空リストチェック
  • 空辞書チェック
  • 空文字チェック
  • 真偽チェック

についてまとめる

基本的なNoneチェック方法

推奨されている方法としては、

  • is None
  • is not None

を使う

is Noneとis not NoneでNoneを判定する

is_None
value = None
if value is None:
print("値はNoneです")
if value is not None:
print("値はNoneではありません")

これはPythonicで、最も安全かつ推奨される方法

非推奨な方法

非推奨
if value == None: # 動くけど推奨されない
...

これは動作しますが、「is」を使う方が型の違いによる誤判定を防げるため、
is Noneを使う方がいい

if文を使ったデータの正常・異常チェック方法

上記はNoneか否かのみを判定したが、実際には

  • 正常なデータがあるときだけ処理したい(Noneでない。そして空リストや空辞書、空文字でない)
  • データがない・取得失敗などのときにエラー処理したい(失敗時に処理)

を実装したい場合もよくある。

その場合は

  • if
  • if not

で判定して処理させることができる

正常なデータがあるときだけ処理したい場合

ifは下記を同時に確認できる

  • bool → True
  • int → 数値が0以外
  • list → listに中身がある
  • dict → 辞書のキーと値がある
  • str → 文字があること※空文字でない
  • None → Noneでない ※Noneは偽とみなさるため実行されない

そのため、正常なデータがあるときだけ処理させることができる

確認実装

正常データのみ処理
# bool型のチェック
bool_val = True
if bool_val:
print("bool: 正常なデータ")
# int型のチェック(0以外)
int_val = 10
if int_val:
print("int: 正常なデータ")
# list型のチェック(空でない)
list_val = [1, 2, 3]
if list_val:
print("list: 正常なデータ")
# dict型のチェック(キーと値がある)
dict_val = {"key": "value"}
if dict_val:
print("dict: 正常なデータ")
# str型のチェック(空文字でない)
str_val = "hello"
if str_val:
print("str: 正常なデータ")
# None型のチェック(ifではFalseとみなされるのでスキップされる)
none_val = None
if none_val:
print("None: 正常なデータ") # 実行されない
# 実行結果
# bool: 正常なデータ
# int: 正常なデータ
# list: 正常なデータ
# dict: 正常なデータ
# str: 正常なデータ

動作は下記で確認

Noneチェック_正常データのみ処理

データがない・取得失敗などのときにエラー処理したい(失敗時に処理)

if notは下記を同時に確認できる

  • bool → false
  • int → 数値が0
  • list → 空list
  • dict → 空辞書
  • str → 空文字
  • None → None

そのため、取得失敗などのときのみにエラー処理したい場合に使える

確認実装

異常時のみ実行
# bool型のチェック
bool_val = False
if not bool_val:
print("bool: データ取得失敗またはFalseです")
# int型のチェック(0)
int_val = 0
if not int_val:
print("int: データ取得失敗または0です")
# list型のチェック(空リスト)
list_val = []
if not list_val:
print("list: データ取得失敗または空リストです")
# dict型のチェック(空辞書)
dict_val = {}
if not dict_val:
print("dict: データ取得失敗または空辞書です")
# str型のチェック(空文字)
str_val = ""
if not str_val:
print("str: データ取得失敗または空文字です")
# None型のチェック(NoneはFalseとみなされる)
none_val = None
if not none_val:
print("None: データ取得失敗またはNoneです")
# 実行結果
# bool: データ取得失敗またはFalseです
# int: データ取得失敗または0です
# list: データ取得失敗または空リストです
# dict: データ取得失敗または空辞書です
# str: データ取得失敗または空文字です
# None: データ取得失敗またはNoneです

実際の動作確認は下記

Noneチェック_異常時のみ処理

使いどころ

DB取得結果のハンドリング等で使うことができる。
正常時に処理するのか、異常時に処理するのかを適宜使い分ける必要はある

正常時のみ処理

正常例
result = db.fetch_data()
if result:
# データがあるときだけ処理
process(result)
else:
# データがないときは何もしない or ログだけ
print("データなし")

異常時のみ処理(エラー処理)

異常例
result = db.fetch_data()
if not result:
# データがないときにエラー処理
raise ValueError("データが取得できませんでした")
else:
process(result)

まとめ

言語によって若干、動作に違いがあるので
pythonの場合のNoneチェックの方法をまとめておく。

関連記事

新着記事

タグ別一覧
top