●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

技術者養成講座

プログラミング講座

WEB講座

情報処理試験講座

Excel講座

Access講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

関数の中の関数「クロージャ」とは?初心者向けにやさしく解説!

プログラミングを学んでいると出てくる「クロージャ(Closure)」。
関数の中で関数を作ることで、変数を“閉じ込めて”記憶させる仕組みです。
今回は、クロージャの仕組みや使い方を、初心者にもわかりやすく解説します。

クロージャ(Closure)とは?

クロージャとは、関数の内部で定義された関数が、外側の関数の変数を覚えている状態のことです。
「関数の中で定義された関数 + そのときのスコープ(変数の情報)」をセットで保持します。

Pythonでのクロージャの例

def make_greeting(name):
    def greet():
        print("こんにちは、" + name + "さん!")
    return greet

hello_yamada = make_greeting("山田")
hello_yamada()  # 実行結果:こんにちは、山田さん!
    

greet()関数はすでにmake_greeting()の処理が終わった後でも、nameの値を覚えています。
この状態が「クロージャ」です。

クロージャの仕組み

  • 外側の関数が実行されると、内側の関数が定義される
  • 内側の関数は、外側の変数を覚えたまま返される
  • 外側の関数が終了しても、変数はクロージャに保存される

クロージャを使うメリット

  • 関数ごとに独立した状態(値)を持てる
  • データを隠して安全に扱える(カプセル化)
  • 一部の変数だけを固定しつつ再利用できる

クロージャに関する注意点

注意点 説明
スコープの理解が必要 ローカル変数とグローバル変数の違いを把握しておく
メモリに残り続ける 必要のないクロージャを作りすぎるとメモリを消費する

クロージャを活用する場面

  • 関数ベースのイベント処理
  • コールバック関数に状態を持たせたいとき
  • オブジェクトを使わずにデータを保持したいとき

まとめ

クロージャとは、関数内で定義された関数が、外の変数を記憶して使い続ける仕組みです。
スコープと関数の関係を活用した、少し高度なテクニックですが、慣れてくると便利な場面がたくさんあります。
初心者の方も、まずは「関数の中に関数を作る」ことから体験してみましょう!