デコレータはプログラム開発でよく使われる関数であり、Python言語開発の基礎知識でもありますが、プログラム内でデコレータを合理的に使用できれば、開発効率が向上するだけでなく、コードを書きやすくなります。より読みやすくなりました^_^
簡単な例は次のシナリオです
関数実行時間統計の紹介
関数の実行 事前準備処理
関数実行後の関数のクリーニング
権限検証とその他のシナリオ
キャッシュ
Decorator case
def user_login(fun): def islogin(request,*args,**kwargs): context = {} if request.session.has_key('uname'): context['uname'] = request.session.get('uname') else: context['uname'] = 'None' return fun(request,context,*args,**kwargs) return islogin
@user_login def ucOrder(request,context,pIndex): ''' 获取数据 处理数据 传递到页面上去
。複数のデコレータの呼び出しシーケンス
def one(func): print('----1----') def two(): print('----2----') func() return two def a(func): print('----a----') def b(): print('----b----') func() return b @one @a def demo(): print('----3----') demo()
実行結果:
/usr/bin/python2.7 /home/python/Desktop/tornadoProject/one.py ----a---- ----1---- ----2---- ----b---- ----3----
この問題に関しては、Python デコレータの実行順序に関する通説を説明できるより良い記事があります
複数の Python デコレータの呼び出し順序に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。