デコレーターは本質的に Python 関数であり、コードを変更せずに他の関数が追加の関数を追加できるようにします。次の記事では主に Python でのデコレーター カスケードの使用方法を紹介します。友達はそれを参照してください。下に。
前書き
私は最近 Python を勉強していて、なぜデコレータを使用する必要があるのかを学び、デコレータが何なのかも理解しました。しかし、デコレータの前に別のデコレータ層を追加できるかどうか疑問に思うかもしれません。デコレーターたちはどうなるでしょうか?建物と同じように、レイヤーが次々と積み重ねられます。実際、それは可能です。今回は、クラスの継承と同様に継続的に継承できるこの積み重ね技術を学びましょう。以下では多くを語る必要はありません。詳細な紹介を見てみましょう。
コードは次のとおりです:
#python 3.6 def star(func): def inner(*args, **kwargs): print("*" * 30) func(*args, **kwargs) print("*" * 30) return inner def percent(func): def inner(*args, **kwargs): print("%" * 30) func(*args, **kwargs) print("%" * 30) return inner @star @percent def printer(msg): print(msg) printer("Hello")
結果の出力は次のとおりです:
****************************** %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Hello %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ******************************
この例では、アスタリスクが最初に出力されます。つまり、最初の層です。デコレータ スターが最初に呼び出され、次に 2 番目の層のデコレータ パーセンテージが呼び出され、最後に関数 printer が呼び出されます。
概要
以上がPython のデコレータ カスケードの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。