ホームページ  >  記事  >  バックエンド開発  >  Python のデコレータ カスケードの例

Python のデコレータ カスケードの例

黄舟
黄舟オリジナル
2017-10-03 05:45:421182ブラウズ

デコレーターは本質的に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。