Menu
Coddy logo textTech

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関数が呼び出される前後にいくつかの動作を追加します。

challenge icon

チャレンジ

簡単

関数 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オンラインコンパイラ