はじめに
Pythonを学んでいると「関数の中に関数が書いてある」コードや「値を保持できる関数」が出てきます。これは ネスト関数 と クロージャ と呼ばれる仕組みです。うまく使うとコードがスッキリし、再利用性も高まります。初心者でも理解しやすいように要点をまとめます。
ネスト関数とは?
関数の中で関数を定義すること。外側の変数にアクセスできるのが特徴です。
クロージャとは?
ネスト関数の「外側の変数」を保持できる関数のこと。状態を持つ関数が作れます。
カウンタの例
実務での応用例
-
キャッシュ処理:同じ計算結果を保存して高速化
-
設定の固定:APIリクエストでベースURLや認証情報をまとめて使い回す
-
小さな状態保持:カウンタやフラグをグローバル変数なしで管理
注意点
-
nonlocal
を使うと外側の変数を書き換えられるが、多用すると読みにくい -
キャッシュは無限に溜めない工夫が必要
-
状態が複雑になったらクラスにした方がわかりやすい
まとめ
-
ネスト関数:関数の中に関数を定義できる
-
クロージャ:外側の値を保持する“状態付き関数”
-
応用:キャッシュ・設定固定・API再利用など
仕組み自体はシンプルですが、実務ではAPI通信やデータ処理の効率化に役立ちます。まずは小さな例から使って慣れていきましょう。
コメント