Pythonのネストされた閉鎖デコレータグローバル、ローカル以外のキーワード

ネスト:内の関数定義された関数
クロージャ:オープンクローズ原理会う:ソースコードを変更せずに機能するために新しい機能を追加が呼び出されます 
ローカル変数にグローバルグローバル変数 
NUM = 100 DEF もう一度Fn1():
     グローバルNUM 
    NUM = 600
     リターンNUMの
 印刷(もう一度Fn1())  600 ローカル変数への非ローカルのネストされた変数DEF 表地():
    NUM = 888
     DEF :インナー()
        非ローカルNUM 
        NUM = 666
         印刷(NUM)  666     インナー()
     印刷(NUM)  666 表地() デコレータ状況下でソースコードを変更せずに新しい機能を追加するためのデフ











表地(FUNC):
     DEFインナー(* argsを、** kwargsから):
        パス#新機能 
        RESの= FUNC(* argsを、** kwargsから)    #を解凍本来の機能を持って
        パス 新しい関数
        の戻りRESを
     返すインナー
 #のデコレータを(外側)、新機能(インナー)を得
@outer
 DEF のFn():
     合格

RES = のFn()
 印刷(RES)

DEF のfoo(FN):
    、ネストされた関数定義
    DEFのバーを(A):
        のFn( *( - 1 ))
         を印刷" * " * 15、)
         リターンのFn(A *(A - 1。 ))

    リターンバー


「」 ' 
装飾効果以下と等価である:(FOO my_test)、
my_testが置き換えられます(装飾)の文の値を返すように、
FOO()関数は、バーを返しますので、機能、そうmy_testバーがある
と同時に、バーmy_test機能に対応するパラメータは、パラメータ
'' ' 


@foo 
DEF :my_test(a)の
     印刷" == my_test機能== " 、a)の


#の印刷my_test機能、参照をこれは、実際にはバーの関数である
印刷(my_test、1111111 次のコードは、(my_testを呼び出して見える)、実際には、()関数barを呼び出すことです 
my_test(10)

 










おすすめ

転載: www.cnblogs.com/wakee/p/11597014.html