Pythonにおける引数を持つ関数を別の関数に渡す方法


  1. 関数を引数として渡す基本的な方法: 関数を引数として渡す際には、関数の名前をそのまま渡します。以下は、引数を持つ関数を別の関数に渡す基本的な例です。

    def func1(arg):
       print("Hello", arg)
    def func2(func, arg):
       func(arg)
    func2(func1, "World")

    この例では、func1という引数を持つ関数を定義し、func2という関数にfunc1と"World"を引数として渡しています。func2内でfunc(arg)と呼び出すことで、渡された関数が実行されます。

  2. ラムダ関数を使用する方法: ラムダ関数は無名の関数であり、即座に作成して使用することができます。以下は、ラムダ関数を使用して関数を引数として渡す例です。

    def func2(func, arg):
       func(arg)
    func2(lambda x: print("Hello", x), "World")

    この例では、func2関数にラムダ関数を引数として渡しています。ラムダ関数はlambda x: print("Hello", x)という形式で定義されており、引数xを受け取って"Hello"とxを表示します。

  3. デコレータを使用する方法: デコレータは関数を修飾するための機能であり、関数を引数として受け取り、修飾された関数を返す関数です。以下は、デコレータを使用して関数を引数として渡す例です。

    def decorator(func):
       def wrapper(arg):
           print("Before")
           func(arg)
           print("After")
       return wrapper
    @decorator
    def func(arg):
       print("Hello", arg)
    func("World")

    この例では、decoratorというデコレータ関数を定義し、func関数にデコレータを適用しています。デコレータ関数は内部でwrapper関数を定義し、func関数の前後に処理を追加します。

これらはPythonで引数を持つ関数を別の関数に渡すいくつかの方法の例です。他にも、functools.partialmap関数など、さまざまな方法があります。具体的な状況に応じて適切な方法を選択してください。