1. ホーム 
  2. 備忘録 
  3. Python

クロージャ

クロージャとは

クロージャ(関数閉方)とは外側の変数を記憶した関数である

クロージャを返す関数をエンクロージャと言う

クロージャとエンクロージャの書き方を以下に記載する


def outer(a, b):  # エンクロージャ
    def inner():  # クロージャ
        return a + b

    return inner


# クロージャの使用方法
print(outer(1, 2))  # <function outer.<locals>.inner at 0x0000015B56DD8550>
f = outer(1, 2)
r = f()
print(r)  # 3


### 利用例
# 円の面積を求める
def circle_area_func(pi):
    def circle_area(radius):
        return pi * radius * radius

    return circle_area


# 円周率だけ先に設定しておく
ca1 = circle_area_func(3.14)
ca2 = circle_area_func(3.141592)

# 間に何か処理が入る
print('Do Something...')

# 半径を入れて計算する
print(ca1(10))  # 314.0
print(ca2(10))  # 314.1592