Decorators Usage
Coddyの「Pythonデコレーター」コースのレッスン 5/12。
Pythonにおいて、デコレータは、別の関数を引数として受け取り、その関数のコードを明示的に変更することなく、その動作を拡張する関数です。デコレータは、柔軟かつ再利用可能な方法で関数の動作を修正または強化するための強力な手段です。
以下は、シンプルなデコレータ関数の例です:
def my_decorator(func):
def wrapper():
print("Before the function is called.")
func()
print("After the function is called.")
return wrapperこの例では、my_decorator関数は別の関数funcを引数として受け取り、wrapperという新しい関数を返します。
wrapper関数は、func関数が呼び出される前後にいくつかの動作を追加します。
チャレンジ
簡単関数 func を引数として受け取り、それが呼び出されるたびに func の名前と func の戻り値を出力する、debug という名前のデコレータ関数を作成してください。
funcの名前を取得するには、func.__name__を使用します。
debug デコレータの使用例を以下に示します。
def hello():
return "Hello"
debug_hello = debug(hello)
debug_hello()この例では、debug デコレータを使用して hello 関数をラップし、debug_hello という新しい関数を作成しています。debug_hello() を呼び出すと、デコレータは以下を出力します。
Calling hello
hello returned: Hello
debugに渡されるすべての関数は、引数を持たない関数であると想定して構いません。
自分で試してみよう
Pythonデコレーターのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ