クロージャ
クロージャとは ▲
クロージャ(関数閉方)とは外側の変数を記憶した関数である
クロージャを返す関数をエンクロージャと言う
クロージャとエンクロージャの書き方を以下に記載する
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
目次