Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pythonデコレータ入門 | Pythonデコレータの習得
Pythonにおける関数型プログラミングの概念

bookPythonデコレータ入門

メニューを表示するにはスワイプしてください

デコレーターについて説明します。 decorators は初心者にとって難しいトピックとなる場合があります。デコレーターがどのように機能するかを、段階的に詳しく解説します。最初は理解が難しいかもしれません。これらの課題に取り組む準備はできていますか?そのためにここに来たのです!

Decorators は、クロージャを利用して、他の関数に追加の機能を付与する 関数 です。以下はデコレーターの動作例です:

123456789101112131415161718192021
def decorator(func): def wrapper(argument1, argument2): print("Function starts executing") result = func(argument1, argument2) print("Function ends executing") return result return wrapper def add(a, b): print(f"Function add: {a} + {b}") return a + b add = decorator(add) print(add(14, 12)) print(add(11, 28)) print(add(33, 16))
copy

この例では、decorator() 関数は別の関数を引数として受け取り、wrapper() 関数を定義し、与えられた関数を wrapper() 内に閉じ込めwrapper()返します。デコレータの動作には3つのステップがあります:

  1. 関数を引数として受け取る。
  2. その関数を新たに定義した関数(ラッパー)内に閉じ込める。
  3. 元の関数を内包したラッパー関数を返す。

wrapper() 関数はデコレータの主なロジックを含み、与えられたパラメータで関数を呼び出します。add() 関数は wrapper() によって返された decorator() 関数によって再代入され、これにより add() 関数が内包されます。

  1. Pythonインタプリタは最初にデコレータ関数を読み込み、定義します。この時点ではデコレータ内のコードは実行されず、単に関数名が記録されるだけです。
  2. 次に、add = decorator(add) 関数を定義します。decorator と同様、この関数もまだ実行されず、定義されるだけです。
  3. addの定義後、次の行 wrapper が実行されます。ここでデコレータ関数が呼び出され、add関数が引数として渡されます。add 内で add定義され、その後返されます。これにより、wrapper は元の関数ではなく、返された decorator を参照するようになります。
  4. add(14, 12) が実行されると、wrapper 関数が呼び出されます。
  • wrapper は「Function starts executing」を出力します。
  • 元の add 関数を呼び出し、「Function add: 14 + 12」を出力し、26を返します。
  • 「Function ends executing」を出力します。
  • wrapper は26を返し、print(add(14, 12)) によって出力されます。

次の呼び出しも同様の手順を繰り返します。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  1
some-alt