まず結論

None は、「値がない」ことを表す特別な値です。

result = None
print(result)

これはエラーではありません。
result には「値がない」という意味の None が入っています。

こんなときに読む記事です

次のような場面で None を見て困った人向けです。

  • 関数を呼んだら結果が None になった
  • print() したら None と表示された
  • 空文字 ""0 と何が違うのか分からない

None は「失敗」そのものではありません。Pythonが「ここには返す値がありません」と示していることがあります。

どこで出てくる?

関数が何も返さないときによく出てきます。

def say_hello():
    print("こんにちは")

result = say_hello()
print(result)

say_hello() は画面に表示していますが、return で値を返していません。
そのため、result には None が入ります。

printとreturnは別もの

print() は画面に表示するだけです。
関数の結果として値を返したいなら、return を使います。

def make_message():
    return "こんにちは"

result = make_message()
print(result)

この場合、result には "こんにちは" が入ります。

空文字や0とは違う

None、空文字、0 は別のものです。

None
""
0

どれも「なさそう」に見えますが、意味が違います。

  • None: 値がない
  • "": 文字が0個の文字列
  • 0: 数字のゼロ

確認するとき

None かどうかを調べるときは、よく is None を使います。

if result is None:
    print("値がありません")

result == None と書いても動くことはありますが、Pythonでは is None がよく使われます。