HOWTO · Python

Python のファースト クラス関数

このチュートリアルでは、Python でオブジェクトとして扱われるファースト クラス関数について説明します。

このページの内容

ファーストクラス関数は、言語によってオブジェクトまたは変数として扱われる関数です。 それらを変数に割り当てるか、オブジェクトとして他の関数に渡すことができます。

Python はファーストクラス関数をサポートしています。

Python のファースト クラス関数のプロパティ

  • オブジェクト型のインスタンスです。
  • 変数に割り当てることができます。
  • 別の関数に引数として渡すことができます。
  • 関数を返すことができます。
  • ハッシュ テーブル、リスト、およびその他のデータ構造に格納できます。

Python のファースト クラス関数の例

オブジェクトとして機能

次のコードでは、関数 square() を変数 my_sq に割り当てています。 現在、my_sqsquare() と同じです。

変数に代入するときに名前を書いたときに、関数を呼び出しませんでした。 実際の関数を参照する関数 my_sq() を呼び出します。

出力として、渡された数値の 2 乗を取得します。

コード例:

# Python 3.x
def square(x):
    return x * x


my_sq = square
result = my_sq(2)
print(result)

出力:

#Python 3.x
4

関数を引数として別の関数に渡す

次のコードでは、オブジェクトを引数として渡すのと同じように、関数 operation() への引数として関数 square() を渡しました。

そのメソッドでは、渡された関数をオブジェクト func に割り当て、func() を呼び出して関数 square() を呼び出します。これは、func() がバックエンドで square() を参照しているためです。 .

関数を引数として受け取る関数を高階関数と呼びます。 ここで、operation() は高階関数です。

コード例:

# Python 3.x
def square(x):
    return x * x


def operation(func):
    result = func(2)
    print(result)


operation(square)

出力:

#Python 3.x
4

関数から関数を返す

関数はオブジェクトであるため、関数を別の関数から返すことができます。 次のコードでは、関数 square() を返す関数 operation() を作成しました。

返された関数をオブジェクト sq に保存しました。 ここで、sq はメソッド square() を参照します。

最後に、sq を介してメソッド square() を呼び出しました。

コード例:

# Python 3.x
def operation():
    def square(x):
        return x * x

    return square


sq = operation()
result = sq(2)
print(result)

出力:

#Python 3.x
4