クロージャとは何ですか?
栗を与えてみましょう:組み込み関数の外部呼出し機能(ネストされた関数は、通常、外では機能することは表示されません)
def outer():
a1 = 'test arg'
def inner():
print('inner', a1)
return inner # 注意,这里返回的是inner函数的内存地址,而不是执行结果。执行结果需要带()。
func = outer() # outer()的执行结果返回inner的内存地址,相当于inner
func() # 这里func加()相当于inner()。这样就可以在外部调用内部的函数了。
原則的に、機能はすべての変数の機能が解放されなければならない、終了します。しかしながら、上述した実施の形態では、外側の後に行われ、A1変数と解放されません。
これはなぜでしょうか?
内側インライン関数は、()FUNC()コールは、外側にあるため、封入外側()関数スコープが解除できないように。まだ外を呼び出すことができ、変数A1のインナー()の戻り値は()です。この現象は、我々はクロージャを呼び出します。
閉鎖意味:インライン関数は、オブジェクトが、また層(囲み)に包まれたスコープ機能外部関係なく、関数呼び出し、外側ラップにおけるそれらの使用の制限された範囲となるよう、唯一の機能オブジェクトではない返します
特長:リターン組み込み関数