Python を書いていると突然出てくる「None」。
「え?これ何?」「なんで出るの?」と引っかかった経験がある人も多いはずです。
この記事では、None が出る理由から、print と return の違い、関数の基本、フィボナッチの理解まで まとめて一気に整理できます。
初心者でも“ストン”と納得できるように、やさしく丁寧に解説していきます。
目次
1. まず知っておきたい:Pythonの関数は2種類ある
Python の関数を理解する第一歩は、実はこれです。
関数には大きく分けて 「表示するだけ」と「値を返す」 の2タイプが存在します。
🔹 ① 表示するだけ(print するだけ)の関数
def hello():
print("Hi")
- 画面に出すだけ
- 値は返さない
- “見せるだけのお知らせ” のイメージ
🔹 ② 値を返す(return を使う)関数
def add(a, b):
return a + b
- 計算結果を他の処理に渡せる
- 持ち帰り可能な「商品」のようなイメージ
この2つを区別できると、このあと出てくる「None」もスムーズに理解できます。
2. print と return の違いを感覚でつかむ
理解のコツは イメージで覚える ことです。
print = 試食みたいなもの
店員さんが「はいどうぞ!」とその場で渡すだけ。
- その場で表示する
- 持ち帰るもの(値)はない
return = お弁当
キッチンから袋に入れて渡してくれるイメージ。
- 値を返す
- 受け取って他の処理に使える
print は“見せる”だけ
return は“渡す”もの
これだけ覚えればもうOKです。
3. return がない関数は自動的に None を返す
ここが初心者がつまずく最大ポイント。
✔ Python では「return がない=None を返す」というルールがある
例:
def hello():
print("Hi")
result = hello()
print(result)
出力:
Hi
None
- hello() は print しているだけ
- 値を返していないので戻り値は None
- print(result) で None が表示される
これが「Noneってなに?」の正体です。
4. None とは?
✔ None = 「値が入っていません」という特別な値
よく混同されやすいので比較するとわかりやすいです。
| 値 | 意味 |
|---|---|
| 0 | 数字の0 |
| “” | 空文字列 |
| [] | 空リスト |
| None | そもそも値がない状態 |
None は「空の箱」ではなく、“箱そのものをまだ準備していない” イメージ。
✔ None かどうかは「is None」で判定する
if value is None:
print("値がありません")
- None は唯一無二の値
- だから
is Noneで判定するのが正しい書き方
5. フィボナッチ数とは?(ついでに理解しておくと楽)
これは「前の2つを足したら次になる」だけの数列です。
✔ フィボナッチ数列の例
1, 1, 2, 3, 5, 8, 13, 21…
1+1=2、1+2=3、2+3=5、3+5=8、5+8=13
自然界でもよく登場する有名な数列です。
6. None を整理する
def print_fibonacci(number):
f1, f2 = 0, 1
while f2 <= number:
print(f2, end=', ')
f1, f2 = f2, f1 + f2
func = print_fibonacci
print(func(100)) #1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, None
ここで起きていることはこうです。
① func(100) を実行
- フィボナッチ数は画面に表示される
- でも 値を返していない(return がない)
② 戻り値は None
その None を print してしまうため……
✔ 最後に None と表示される
これで謎がすべてつながります。
7. None を出さない書き方(2つの方法)
✔ 方法① print で包まずに呼ぶ
func(100)
✔ 方法② 値として返す
def get_fibo(n):
f1, f2 = 0, 1
result = []
while f2 <= n:
result.append(f2)
f1, f2 = f2, f1 + f2
return result
print(get_fibo(100))
まとめ
最後に重要ポイントだけギュッとまとめます。
● 関数には「表示するだけ」と「値を返す」の2種類がある
● print は“見せるだけ”、return は“渡すもの”
● return がない関数は自動で None を返す
● None は「値がない」という特別な値
● print(関数()) と書くと None が見えやすい
● フィボナッチは「前の2つを足す数列」
ここまで理解できれば、
Python の 関数まわりのつまずき は一気に解消します。
【おまけ】Python初心者が覚えておくと便利な補足知識3選
この記事では「None」「print」「return」「関数の仕組み」などを中心に解説しましたが、
ここでは 少しだけ踏み込んだ“+αの理解” をまとめています。
Pythonをこれから学ぶ人にとって、
「知ってると後で困らない」ポイントなので、気軽に目を通してみてください。
🟡 補足①:print() で表示されるものと “戻り値” はまったく別
初心者がよく混同するポイントです。
def sample():
print("Hello")
- 表示 →
Hello - 戻り値 →
None(return が無いので)
「表示される=戻り値」ではない
ということだけ覚えておくと混乱が激減します。
🟡 補足②:関数の戻り値は“1つだけ”しか返せない(ただし…)
Python の関数は、実は 戻り値は1つだけ です。
しかし、次のように書くと複数返しているように見えます。
def calc(a, b):
return a + b, a * b
x, y = calc(3, 4)
でもこれ、Python的には実は タプル(1つのまとまり)を返しているだけです。
(7, 12) という1個のタプル
これを2つに“分けて”受け取れるだけ。
関数の仕組みを理解するうえで、知っておくと後で役に立ちます。
🟡 補足③:return の瞬間、関数はそこで終了する
これも知らない人が多いポイント。
def test():
print("A")
return
print("B")
出力:
A
- return に到達した瞬間に関数は終了
- その下のコードは実行されない
関数の流れを理解するうえで、とても重要な性質です。
🟢 おまけ部まとめ
この“補足3つ”を知っておくと、
- printとreturnの使い分け
- 関数の流れ
- Pythonの基本的な動き
がさらにスムーズに理解できるようになります。
初心者のうちは、
「表示」と「戻り値」を混同しないこと
return が関数の終了を意味すること
この2つを知っているだけで、つまずく回数がぐっと減ります。





