ネスト:内の関数定義された関数
クロージャ:オープンクローズ原理会う:ソースコードを変更せずに機能するために新しい機能を追加が呼び出されます
#ローカル変数にグローバルグローバル変数 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)