#1、クラスは明日参照デコレータ準備口述を書いて説明します
デフ(DB_TYPEを)のauth: デフデコ(FUNC): デフ(* argsを、**ラッパーkwargsから): 名 =入力(' あなたの名前>>>:' ).strip() PWD =入力(「パスワードを>>> :' ).strip() の場合 DB_TYPE == ' ファイル' : 印刷(' 基于文件的验证' ) であれば名前== ' エゴン' と PWD == ' 123 " : RES = FUNC(* argsを、** kwargsから) 復帰RES のelif DB_TYPE == ' mysqlの' : 印刷(' ベースの認証のMySQLの' ) のelif DB_TYPE == ' LDAP ' : 印刷(' ベースの認証LDAP ' ) それ以外: 印刷(「サポートされていないDB_TYPE 」) の戻りwarpperの リターンデコ @auth(DB_TYPE = ' ファイル' ) DEF 指数(X、Y): プリント(' インデックス>>>%S%S '%(X、Y)) @auth(DB_TYPE = ' のMySQL ' ) DEF 家(名前) : プリント(名) @auth(DB_TYPE = ' LDAP ' ) DEF (転送): プリント(' 転送')
2:私たちは関数オブジェクトの概念を使用するときに来る、来て、それを操作する辞書機能させること、忘れないでください、私たちは、ファイルの先頭の文で大、空の辞書にもっと練習があり、その後、各関数の前にデコレータを追加します自動的に辞書に追加操作を完了
DIC = {} DEF add_dicは(キー、値): DEF outter(FUNC): DEF(*引数、**ラッパーkwargsから): DIC [キー] = 値 RES = FUNC(*引数、** kwargsから) 戻りRESを 返すラッパー リターンoutter @add_dic(' 1 '、[ ' ログイン'、' 登入' ]) DEF ログイン(): 合格 (@add_dic ' 2 ' [ 'REGIST ' ' 登録' ]) DEF REGIST(): パス @add_dic(' 3。 '[ ' check_money ' ' 残高照会" ]) DEFのcheck_money(): 合格 ログイン() REGIST() check_money() 印刷(DIC )
関数f1が行われると、メッセージ2017年7月21日11時12分11秒F1ランがログファイルパスを指定することができ、ログ・ファイルに書き込まれ:3などの機能を実現するログデコレータを書きます
インポート時 SRC = なし デフouutar(FUNC): デフラッパー(* argsを、** kwargsから): グローバルSRC 場合 SRC == なし: inp_src =入力(' 输入文件路径' ) SRC = inp_src RES = FUNC(* argsを、 ** kwargsから) オープン(inp_srcと' で'、コード= ' UTF-8 ' :Fなど) f.write(' {} F1ラン' .format(time.strftime(' %Y-M - %%% X-D ' ))) 印刷(' 書き込み成功' ) の戻りRESを 返すwarpper @ouutar DEF F1(): パス F1()
図4に示すように、反復的に基づいて、値の文字列は、リストは、タプルは、辞書は、ループ反復は、ファイルオブジェクトを設定しながら
DEF (obj_iterator): 一方TRUE: トライ: プリント(obj_iterator __next__ ()) を除いて呼び出すとStopIteration: 破壊 (' 123 '。__iter__ ()) ([。1,2,3] __iter__ ()) ({ 1:' '、2 ' B ' }。__iter__ ()) (( 1,2,3)。__iter__ ()) ({ 1,2,3}。__iter__ ()) オープンと(' A.TXT '、' RT '、=コード' UTF-8 ' Fとして): (F __iter__())
5、カスタムイテレータは、レンジ機能を実装します
DEF my_range(開始、停止、ステップ= 1 ) しながら、開始< :ストップ 降伏開始が 起動 + = ステップの ための I に my_range(0,5 ): プリント(I)