09--閉鎖ベースのpython、デコレータ

1.1  クロージャ

図1は、他の関数へのパラメータとして渡されたファーストクラスのオブジェクト変数に割り当てられた支持体、の関数として、戻り値などの他の機能は、ネストされた関数をサポートし、実装 __call__ 関数が呼び出されるように、クラスのインスタンス・オブジェクト・メソッドも使用することができます

2、S = FUNC - > 関数メモリアドレスの実行

   S = FUNC() - > 関数呼び出し

 

3、クロージャ:ネストされた関数は、内部変数関数は、外部関数の呼び出し

         ローカル変数は、永久的なメモリを作ることができます

デフアウター():

  = 1             

  デフインナー():#の閉鎖機能

    pritn(A)

  プリント(内側.__ closuer__)#結果がある場合、セル閉鎖関数であります

 

4、クロージャの一般的な形態   外用機能のための内部機能には、内部変数の両方の関数となります

デフアウター():

  = 1#パーマネントメモリ、他のプログラムを防ぐために、この変数を変更

  デフインナー():#の閉鎖機能

    pritn(A)

    インナー戻ります

インは=外側()#のグローバルメモリ変数にファンクションポイント

宿()

 

1.2  デコレータ

1、デコレータの役割は、関数が呼び出され、変更したいのですが、まだ前と後に元の関数の機能性を高めるためにしたくありません

2.クローズ原理

3、デコレータの性質:閉鎖機能

。1  DEFのwarpper(FUNC):
 2      DEFインナー(* argsを、** kwargsから):
 3          関数の実行前には、飾らない
4。          RET = FUNC(* argsを、** kwargsから)
 5。          飾られる関数で実行後の観光名所
6          リターンRET
 7      リターンインナー                
ラッパー

 

4、functools

functoolsからラップをインポート

デフラッパー(FUNC):

  @wraps(FUNC)#は関数の名前は、装飾的な機能である変更されません。

  デフインナー(* argsを、** kwargsから):

    #DOを添え機能の実行前に

    RET = funcを(* argsを、** kwargsから)

    #飾られている関数の後には何を実行します

    右を返します

  インナー戻ります

 

5、パラメータとデコレータ レイヤーデコレータ

おすすめ

転載: www.cnblogs.com/fbug/p/11793021.html