クロージャーについてメモ。

python
この記事は約2分で読めます。

クロージャーの概念を初学者に教える際に見せるメモ。

def make_circle_area_func(pi):
    def circle_area(radius):
        return radius * radius * pi
    return circle_area

circle_area3 = make_circle_area_func(3) // ← その1
circle_area3(4) // ← その2
// 48が出力 

circle_area314 = make_circle_area_func(3.14)
circle_area3(4)
// 50.24が出力 

関数の中に関数を作ると、それがクロージャーというもので、機能してくれます。

例えば、上記コードの「その1」を実行すると、一旦make_circle_area_func()に引数を与えます。

よってこの状態では引数のpiに3が与えられます。

それを一旦変数に入れると、上記の状態が記憶されたまま(= piの部分に3が入っている状態)になります。ここではcircle_area3という変数にしました。

その後、「その2」の部分のようにcircle_area3に引数を与えてあげると、circle_area(radius)の引数に自動的に与えられます。

以下は自分なりのイメージ。

与えられた引数を覚えてくれるので、便利ですね。

コメント

タイトルとURLをコピーしました