クロージャー
クロージャー(関数閉法)外側の変数を記憶した関数
関数 outer の戻り値に innnerと記述して、実行しないでいると、innner のオブジェクト情報が返ってきます。
def outer(a, b):
def inner():
return a + b
return inner
print(outer(1, 2))
<function outer.<locals>.inner at 0x7fae2d6c7050>
innner 関数がまだ実行されていない状態です。(a + b が計算されていない状態)
変数 f にouter関数を代入し、f を f() で実行すると、outer 関数が実行されます。
def outer(a, b):
def inner():
return a + b
return inner
f = outer(1, 2)
r = f()
print(r)
3
円の面積計算関数 circle_area_func() で、初めに pi を設定しておいて、後ほど pi の値の変化に応じて結果を返してみます。
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(ca1(10))
print(ca2(10))
314.0
314.1592
クロージャーの簡単な説明でした。
コメント