やっほー!国内のAI狂いだよ!✨
第9回へようこそ!突然だけど、同じコードを何度も何度もコピペして「あー面倒くさい!」ってなったことない?
その悩み、今日で解決するよ!
今回は、よく使う処理をひとまとめにして名前をつける「関数(function)」のお話。
これを使えば、面倒な作業を「専用ロボット」に任せるみたいに、一発で呼び出せるようになるんだ!🤖💨
公式の「ここがわかりにくい」:フィボナッチ数って何?
公式チュートリアルで関数を学ぶ章を開くと、いきなりこんな例が出てくるよ。
フィボナッチ数列を任意の上限まで出力する関数を書いてみましょう:
「えっ、数学の話?帰っていいですか?🥺」
大丈夫、逃げないで!(笑)
フィボナッチ数列(前の2つの数字を足していく数列)はプログラミングの例題としては定番なんだけど、今は数学の中身なんてどうでもいいの。
大事なのは「処理のカタマリを作って、好きな時に呼び出す方法」を覚えることだよ!
1. 関数の作り方:「def」でロボットを定義!
関数を作るには、def(define=定義するの略)というキーワードを使うよ。
「この名前で呼んだら、この処理をしてね!」ってPythonに教えてあげるんだ。
🐍 サンプルコードを見る(クリックで開閉)
# 関数を作る(定義する)
def say_hello():
# ここにやりたい処理を書く(インデント必須!)
print("こんにちは!")
print("Pythonの勉強頑張ってるね!")
# まだ何も起きないよ...(定義しただけだから)
# 関数を使う(呼び出す)
print("--- 呼び出してみる ---")
say_hello()
print("--- もう一回呼んでみる ---")
say_hello()
— 呼び出してみる —
こんにちは!
Pythonの勉強頑張ってるね!
— もう一回呼んでみる —
こんにちは!
Pythonの勉強頑張ってるね!
ポイントは、関数名の後ろに必ず `()` をつけること。
定義する時も、呼び出す時も、このカッコが目印だよ!
2. 引数:ロボットに材料を渡そう
ただ「こんにちは」って言うだけのロボットじゃつまらないよね。
「〇〇さん、こんにちは!」って名前を変えられるようにしたい。
そんな時に使うのが「引数(ひきすう)」だよ。関数のカッコの中に渡す「材料」のことだね。
🐍 サンプルコードを見る(クリックで開閉)
# カッコの中に変数名を書く(これを受け取るよ!という宣言)
def greet(name):
print(f"{name}さん、こんにちは!")
# 使うときに具体的な材料(値)を渡す
greet("AI狂い")
greet("Python初心者")
AI狂いさん、こんにちは!
Python初心者さん、こんにちは!
ちなみに、受け取る側の変数(ここでは `name`)を仮引数、
渡す側の値(”AI狂い”など)を実引数って呼ぶこともあるよ。試験ではどっちも「引数」って呼ばれることが多いけどね。
3. 【重要】戻り値:ロボットから結果を受け取る
さっきの `greet` 関数は画面に表示して終わりだったけど、計算結果を使ってさらに別の計算をしたい時はどうする?
そんな時は return 文を使って、結果を「持ち帰らせる」んだ。
🐍 サンプルコードを見る(クリックで開閉)
# 足し算をして結果を返す関数
def add(a, b):
result = a + b
return result # 結果を返す!
# 関数の結果を変数に入れることができる
answer = add(10, 5)
print(f"答えは {answer} です")
# そのまま計算に使ったりもできる
print(add(10, 5) * 2)
答えは 15 です
30
return がない関数は?return を書かなかったり、return だけで値を指定しなかった場合、その関数は None を返すよ!
「何も返さない」んじゃなくて「空っぽという値を返す」んだね。ここ超重要!
4. docstring:関数の説明書を書こう
ここ、試験でよく問われるポイントだからしっかり聞いてね!👂
関数を作ったはいいけど、半年後の自分が「これ何する関数だっけ?」って忘れたら困るよね。
だから、関数の先頭には「説明書」を書くルールがあるんだ。
これをドキュメンテーション文字列(docstring)と呼ぶよ。
- 場所:
def行のすぐ下!関数の中身(インデントされたブロック)の先頭行。 - 書き方: 三重クォート
"""で囲む。
試験で問われる「書き方のマナー」
ただ書けばいいってわけじゃなくて、実は推奨されるフォーマット(PEP 257)があるんだ。
試験ではこの「お作法」が正誤問題で出ることがあるから要チェックだよ!
- 1行目: 短い要約を書く。大文字で始めてピリオドで終わる(英語の場合)。
- 2行目: 空行にする(要約と詳細を分けるため)。
- 3行目以降: 詳細な説明や引数・戻り値の説明を書く。
🐍 サンプルコードを見る(クリックで開閉)
def square(n):
"""数値を2乗した値を返す関数。
(ここに空行を入れるのがマナー!)
引数:
n: 2乗したい数値
戻り値:
nの2乗
"""
# ↑ ここ(関数の先頭)に書くのがお作法!
return n ** 2
# 説明書を読む方法
print(square.__doc__)
数値を2乗した値を返す関数。
(中略)
nの2乗
# のコメントとは違って、プログラムから .__doc__ で取り出せるのが特徴だよ。
試験で「docstringはどこに記述しますか?」って聞かれたら、「関数本体の先頭!」って即答できるようにしておこうね!
試験に出る!要注意ポイント
今回の範囲で、Python 3 エンジニア認定基礎試験によく出るポイントをまとめたよ!📝
① 関数は「定義」だけでは動かない
def で関数を書いても、それを呼び出さない限りコードは実行されないよ。
試験で「このコードの実行結果は?」と聞かれた時、関数が定義されてるだけで呼び出されてなかったら、中身の print は無視されるから注意!
② return後のコードは実行されない
return は「ここで関数終了!帰る!」という合図。
だから、return の後ろに書いたコードは絶対に実行されないよ(到達不能コード)。
return と print を混同してて、「画面に表示されたから値が返ってきてるはず!」って勘違いしてバグらせたことがあるよ😭print は「ただ叫んでるだけ」、return は「手紙を渡してくれる」ってイメージで区別しよう!
理解度チェック!ミニクイズ
関数の基本、しっかり理解できたかな?
試験レベルの問題でチェックしてみよう!🔍
次のコードの実行結果は?
def func():
print("A")
return "B"
print("C")
print(func())
▼ クリックで正解を表示
解説:
まず関数内の print("A") が実行される。
次に return "B" で “B” を返して関数は終了。
return 後の print("C") は実行されないよ。
最後に print(func()) によって、返ってきた “B” が表示されるから、結果は A → B の順になるね。
戻り値を指定しない関数(return文がない関数)が返す値は?
▼ クリックで正解を表示
解説:
Pythonでは、明示的に値を返さない関数は自動的に None を返す決まりになってるよ。
エラーにはならないから安心してね。
docstringの書き方として推奨される(試験で問われる)ルールは?
▼ クリックで正解を表示
解説:
PEP 257というルールで決まっているよ。
1行目は簡潔な要約(ピリオドで終わるのが理想)、2行目は空行にして見やすくするのがマナーだね!
まとめ:次回への引き
今回は「関数の基本」について解説したよ!
def で定義して return で返す。このリズムを覚えれば、どんな複雑なプログラムも怖くないよ!
次回は、関数をもっと便利にするための応用テクニック!
テーマは「関数の応用(1):引数のデフォルト値」だよ。
「引数を省略したら勝手にこの値を使って!」みたいな設定ができるんだけど、そこには初心者が必ず踏む巨大な地雷が埋まっているの…。
次回、その地雷の場所と回避方法を教えるから絶対見てね!👋✨
出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.






