C
Python/入門/Lesson 06

関数 (Function)

1時間·theory
このチャプター
5/7
Python

関数 (Function)

🎯 このレッスンを読み終えたら

このレッスンを読み終えると、次の3つを自信を持ってできるようになります。

  • args · *kwargs + デフォルト値の落とし穴 (mutable default)
  • ✅ 型ヒント + docstring の記述
  • ✅ ファーストクラス関数 + クロージャ

学習目標をチェックリストとして手元に置き、すべて答えられるようになったらレッスンを閉じてください。

関数の8パターン — コード + 実行結果

関数 = 名前付きのコードブロック。同じ処理を何度も書く必要があるとき、再利用できます。

💻 greet, add, is_even, デフォルトパラメータ
# ===== 関数定義 =====

# 挨拶関数 — 入力: 名前, 出力: 挨拶文字列
def greet(name):
    return f"こんにちは、{name}さん!"

# 足し算関数 — 入力: 二つの数字, 出力: 合計
def add(a, b):
    return a + b

# 偶数判定関数 — 入力: 整数, 出力: True/False
def is_even(n):
    return n % 2 == 0   # 余りが0なら偶数

# デフォルト引数 — 引数なしで呼び出すとデフォルト値を使用
def introduce(name, age=25, city="東京"):
    return f"私は{city}に住む{age}歳の{name}です。"

# ===== 呼び出しと出力 =====
print(greet("山田太郎"))            # こんにちは、山田太郎さん!
print(add(10, 20))                # 30
print(is_even(7))                 # False
print(is_even(8))                 # True

# デフォルト値の活用
print(introduce("田中"))        # 私は東京に住む25歳の田中です。
print(introduce("佐藤", 30, "大阪"))  # 私は大阪に住む30歳の佐藤です。

# return のない関数 → None を返す
def say_hello():
    print("Hello!")               # 出力はするが

result = say_hello()
print(f"戻り値: {result}")        # 戻り値: None

💡 重要ポイント

1. デフォルト値を持つパラメータは末尾に配置します。
2. *args: 可変長位置引数(タプル)
3. **kwargs: 可変長キーワード引数(辞書)

Python のファイル I/O は open() 関数を使ってファイルを開きます。with open(path, mode) as f: パターンにより自動的にファイルが閉じられることが保証されます。モード: r(読み込み)、w(書き込み)、a(追記)、b(バイナリ)。JSON には json.load/dump、CSV には csv.reader/writer を使います。pathlib.Path はファイルパスをオブジェクト指向的に扱います。

🐍 実際に試してみよう — 関数 (Function)

上記の概念を実際にコードとして実行してみてください。値を変えながら動作を自分で確認するのが最も速い学習方法です。
✏️ Python 코드
📟 コンソール出力
▶ 実行ボタンを押してください
🐍 Pyodideで実際のPythonを実行 — 初回は読み込みに3〜5秒

🤖 AI にこう頼んでみよう

このレッスンの概念を知っていると、AI に具体的な指示を出せるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。

  • 「この関数に型ヒント + docstring を追加して」
  • 「この関数の副作用(グローバル変数の変更)を取り除いて純粋関数に変えて」

なぜこれでトークンが減るのか

概念を知らないと、AI の返答を受け取っても「それはどういう意味ですか?」と再度聞き直す必要があります。その「聞き直し」がトークンを消費します。概念を一度しっかり覚えておけば、会話が一度で完結します。

関数定義 - Python