Python Syntax
Coddyの「Pythonデコレーター」コースのレッスン 6/12。
前回のレッスンでは、関数デコレータを作成する方法を見ましたが、Pythonは@記号を使用してこの機能を実現する、よりエレガントな方法を提供しています。
例えば、
def my_decorator(func):
def wrapper():
print("Before function is called.")
func()
print("After function is called.")
return wrapper
@my_decorator
def my_function():
print("Inside my_function.")my_function()を実行すると、次のような出力が表示されます。
Before function is called.
Inside my_function.
After function is called.これは、デコレータ関数my_decoratorが、my_functionが呼び出される前後にいくつかの追加コードを加えることで、その動作を変更できたことを示しています。
チャレンジ
簡単関数 add のコードが与えられています。
あなたのタスクは、前回のレッスンと同様に debug という名前の関数デコレータを作成することですが、いくつか追加事項があります:
@記号を使用して、関数デコレータdebugをaddに適用してください。- debug 関数は関数の引数をサポートする必要があります。
デコレータで引数を持つ関数をサポートするには、次のように記述します:
def my_decorator(func):
def wrapper(a, b):
print("Before function is called.")
func(a, b)
print("After function is called.")
return wrapper例:
関数呼び出し add(2, 3) に対して、以下のように出力される必要があります:
Calling add with arguments (2, 3)
add returned: 5自分で試してみよう
# ここにコードを記述します
def add(a, b):
return a + bPythonデコレーターのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ