デコレータファクトリ関数

「」「
オンデマンド:整数0所望の表示時に引数、浮動小数点数に表示パラメータ
」「」
インポート時間


DEFのget_run_time(のフラグ):
     「」「デコレータファクトリ機能」「」

    DEF GET_TIME(FUNC):
         "" " デコレータ機能:統計のための時間の関数" "" 
        印刷' GET_TIMEで' 

        DEFインナー(* argsを、** kwargsから):
            T1 = time.time()
            RES = FUNC(* argsを、** kwargsから)
            T2 = time.time()
             IF内のフラグ== 0:
                印刷"ファイル名を指定して実行DS%'%(T2 - T1))
             他を印刷' 実行FS%"%(T2 - T1))
             戻りRESを

        返すインナー

    リターンGET_TIME 


装飾効果の工場の機能を:1>受信機デコレータ機能は必要なく、直接パラメータを受け入れることができない---->受信パラメータは、2>は装飾品の生産は---->デコレータ関数生成

#の関連性を:インテリアデコレーター機能は工場である本物の実装プロセス:1> GET_TIME = get_run_time(パラメータ)関数func1のGET_TIME =関数func1(関数func1)装飾2.> @get_time 
@get_run_time(0)  関数名の戻り値をフレーズGET_TIMEを
DEFfunc1の(NUM、年齢= 18である):
     のための I における(3レンジ):
        (time.sleep。1 印刷' FUNCで' 、NUM、年齢)


#1 (1)@get_run_time注:これは個別に見られるべきであるF1 = get_run_time( 1)これは、全体、関数呼び出しで、その後の値を返します@ F1をこれはデコレータ関数の本当の始まりです

がfunc1( 89 

"「」
質問:
?1>デコレータのファクトリ関数は関数デコレータで行い
ませんインテリアデコレーター工場定義関数、および参照デコレータ関数を返す
関係2.>デコレータのファクトリ関数とデコレーターは?
戻り値は、工場出荷時のデコレータ関数への参照です。その役割はデコレータ関数を作成することですオブジェクト<アドレスまたは複数の適切な参照を呼び出します> 
「」 "

デコレータ装飾機能の複数:

"" " 
<I>イタリック
<B>太字、太字


、複数のデコレータ:同時に展開される複数の機能
" "" 

DEF makeBold(FUNC):
     "" " 大胆" "" 
    DEFインナー(* argsを、** kwargsから):
         リターン ' <B> ' + FUNC()+ ' </ B> ' 
    リターンインナー


DEF makeItalic(FUNC):
     "" " 傾き" "" 
    DEFインナー(* argsを、** kwargsから):
         リターン " <I> ' + FUNC()+ ' </ I> "
    返すインナー

@makeItalic  
@makeBold
@makeItalic 
デフF1():
     リターン ' 人生は短いですが、私はPythonの使用' 


印刷(F1())
<I> <B> <I>人生は短いですが、私は、Pythonを使用</ I> </ B> </ I> 

実行順序、第1の傾き、太字は、衣服のように、下着は、まず、外側リヤ

#1 F1 = makeItalic(F1):魂は、コード認識

1> F11 = makeItalic(F1)はインナー内部makeItalic F11である。2 。> F111 = makeBold(F11) F111 インナーの内側にmakeBoldある

#の理解のステップ:F1 = makeBold(makeItalic(F1 ))------> 簡単な理解は、多層の装飾である自分自身を表現パッケージを送信するように層の宅配便の弟の後に一つのパッケージに行くのに役立ちます。

実行順序が行く最も内側に実行する必要があります。<完全な装飾に最も内側のデコレータ> 飾る開始する最初の最も外側の層であり、それは、内部の装飾を飾るために完了する必要があります。

おすすめ

転載: www.cnblogs.com/huaibin/p/12101187.html