Chapter 3 / Functions & Lists
Lesson 3.1 関数の基本
def、引数、return を使って関数を作ります。
このページは無料で閲覧できるサンプルです。実際に手を動かして写経し、進捗を保存して学習を進めるには、ログインしてから学習ページへお進みください。
このレッスンで学ぶこと
関数は「同じ処理に名前を付けて、好きなときに呼び出して再利用する」ための仕組みです。Python では def 関数名(引数): という形で定義し、return で結果を呼び出し元に返します。
プログラムが少し長くなってくると、同じような処理を何度も書く場面が必ず出てきます。コピー & ペーストで済ませると、後から仕様が変わったときに何箇所も直す必要が出てきて事故の元です。一度関数として切り出してしまえば、修正は 1 箇所で完結します。「同じコードを 2 回書きそうになったら関数化を検討する」が経験則です。
写経 1
写経 1
引数を受け取って挨拶文を返す関数を書きます。
def greet(name):
return f"Hello, {name}!"
print(greet("Tutor"))Hello, Tutor!写経 2
写経 2
関数の中で一度変数に入れてから return する形を練習します。
def double(number):
result = number * 2
return result
print(double(8))16発展問題 (概要のみ)
発展問題
2 つの数値を受け取って合計を返す add 関数を書き、print で結果を確認しましょう。
def add(a, b):
発展問題の自動採点はログイン後の学習ページでのみ動作します。
def の構文と return
def 関数名(引数): と書いたら、次の行から半角スペース 4 つで字下げして関数の中身を書きます。最後に return で値を返すと、呼び出し元はその値を受け取れます。たとえば def double(x): return x * 2 と定義すれば、double(5) は 10 を返します。インデントの位置が関数の「中か外か」を決めるので、return をうっかり 1 段外に書くと関数の外の処理になってしまい、思った値が返ってきません。
return を書かないと None が返る
関数の中に return を書かないと、Python は暗黙的に None という特別な値を返します。print(...) と return ... は別物で、関数の中で print しただけだと「画面に表示はされるが、呼び出し元は何も受け取れない」状態になります。「呼び出し元が結果を使う関数」なら必ず return を、「画面に出すだけが目的の関数」なら print のみ、と意識的に使い分けてください。
引数と戻り値の流れ
- 引数 (argument): 関数を呼び出すときに渡す値。例: add(3, 5) の 3 と 5
- 仮引数 (parameter): 関数の定義側で受け取る名前。例: def add(a, b): の a と b
- 戻り値 (return value): 関数が返す結果。呼び出し元で result = add(3, 5) のように受け取れる
- 副作用 (side effect): print やファイル書き込みなど、値を返す以外の動作。多用すると関数の動きが追いづらくなる
関数の中の変数は外に漏れない
関数の中で代入した変数 (引数も含む) は、その関数の中だけで有効です。これを「ローカルスコープ」と呼びます。たとえば def double(x): result = x * 2 → return result と書いたとき、関数の外から result にアクセスしようとしても NameError になります。これは不便に見えますが、「関数の中での試行錯誤が外の世界に影響しない」という安全性を生んでいて、複雑なプログラムを書くときの安心感に直結します。
手を動かして練習しましょう
ログインすると、お手本コードを 1 文字ずつ写経しながらブラウザ上で実行し、合否を確認しながら学習を進められます。進捗は自動で保存されます。