小猿のサークルのpython学習 - 閉鎖は何ですか?

別の関数に位置インビボ関数式に閉鎖、すなわち、関数定義及び関数(ネストされた関数)に。また、これらの内部関数は、パラメータを宣言外側の関数のすべてのローカル変数にアクセスすることができます。これらの内部機能の一つは、それらを含む外部関数の外に呼び出されると、それはクロージャを形成することになります。外側の関数が戻った後ということです、内部関数が実行されます。この内部関数が実行されると、ローカル変数、パラメータ、およびその他の内部機能の外部機能にアクセスすることが必要です。これらのローカル変数、パラメータ、関数宣言(最初)の値は、外部関数が返すだけでなく、内部機能の影響を受けた値です。

デフアウター():

    名前= 'アレックス

    デフインナー():

        印刷(「変数の内層に外側の機能を印刷」、名前)

    唯一の内部メモリアドレスを返すインナー#注意、実装されていませんを返します

0x1027621e0でF =外側()#1 .inner>

F()#は、(内側の実装に相当します)

この時間外に放出されている外側のメモリ内の通常の状況下で、実施されていることに注意してください、しかし、理由はクロージャのこの時間は、我々はまだ、内側を呼び出すことができ、そして内側の内部は、名前の変数の外側の層の上に呼び出します。この現象は、粘着性のねばねばクロージャです。

有意クロージャ:関数は、関数に関わらず優先外層はその範囲を包んだ場合の呼び出しを行う層に包まれたスコープ機能の外に、オブジェクトだけでなく、関数オブジェクトを返します

使用されるクロージャ?次のセクションでは、使用されます。

ます。https://www.jianshu.com/p/946d29a6ad4fで再現

おすすめ

転載: blog.csdn.net/weixin_33695082/article/details/91100222