Python関数(9)の第V章:クロージャ

クロージャとは何ですか?
栗を与えてみましょう:組み込み関数の外部呼出し機能(ネストされた関数は、通常、外では機能することは表示されません)

def outer():
    a1 = 'test arg'

    def inner():
        print('inner', a1)

    return inner  # 注意,这里返回的是inner函数的内存地址,而不是执行结果。执行结果需要带()。


func = outer()  # outer()的执行结果返回inner的内存地址,相当于inner

func()  # 这里func加()相当于inner()。这样就可以在外部调用内部的函数了。

原則的に、機能はすべての変数の機能が解放されなければならない、終了します。しかしながら、上述した実施の形態では、外側の後に行われ、A1変数と解放されません。
これはなぜでしょうか?

内側インライン関数は、()FUNC()コールは、外側にあるため、封入外側()関数スコープが解除できないように。まだ外を呼び出すことができ、変数A1のインナー()の戻り値は()です。この現象は、我々はクロージャを呼び出します。

  • 閉鎖意味:インライン関数は、オブジェクトが、また層(囲み)に包まれたスコープ機能外部関係なく、関数呼び出し、外側ラップにおけるそれらの使用の制限された範囲となるよう、唯一の機能オブジェクトではない返します

  • 特長:リターン組み込み関数

おすすめ

転載: www.cnblogs.com/py-xiaoqiang/p/11076888.html