クロージャは、関数内にネストされた関数を作成できる Python 言語の高度な機能で、外部関数が実行を完了して返された場合でも、ネストされた関数は外部関数のローカル変数にアクセスできます。簡単に言えば、クロージャは関数とそれに関連付けられた参照環境の組み合わせです。
クロージャを理解するには、まずいくつかの基本概念を理解する必要があります。
-
関数オブジェクト: Python では、関数をオブジェクトとして扱うことができます。関数は変数に割り当てたり、引数として他の関数に渡したり、関数の戻り値として渡すことができます。
-
ネストされた関数: Python では、別の関数の中に関数を定義できます。内部関数は、外部関数のパラメータやローカル変数など、外部関数の変数にアクセスできます。
次に、単純なクロージャーの例を見てみましょう。
def outer_function(x):
def inner_function(y):
return x + y