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、パラメータとデコレータ レイヤーデコレータ