はじめに
Pythonでは関数の中に関数を定義することができます。
実行環境
pycharm 2021.2(python3.10)
コード1
まずはクロージャの簡単な動作から。
def func():
def inner(a):
print('a:', a)
print('a**2:', a ** 2)
inner(2)
func()
表示
a: 2
a**2: 4
コード2
関数内関数を使うことにより、関数を戻り値として返すことができるようになります。
def adder(a):
def inner(x):
# xは関数内関数の引数、aはadder呼び出し時の引数
return x + a
return inner
# クロージャを作成し、add3, add5に代入する
add3 = adder(3)
add5 = adder(5)
# add3, add5に代入されたクロージャを呼び出す
print(add3(10))
print(add5(10))
表示
13
15