Python 17:高次関数

1048 ワード

変数は関数を指すことができます
pythonに組み込まれた絶対値を求める関数abs()を例に、この関数を呼び出してコードを使用します.
>>> abs(-10)
10

でも、absだけ書くの?
>>> abs


abs(−10)は関数呼び出しであり、absは関数自体であることがわかる.
関数呼び出しの結果を取得するには、次のようにします.
>>> x = abs(-10)
>>> x 
10

しかし、関数自体を変数に割り当てるのは?
>>> f = abs
>>> f


結論:関数自体は変数に値を割り当てることができ、すなわち、変数は関数を指すことができる.
>>> f = abs
>>> f(-10)
10

では、関数名は何ですか.関数名は実は関数を指す変数で、abs()という関数に対して、関数名absを変数と見なすことができ、絶対値を計算できる関数を指す.
入力関数
変数が関数を指すことができ、関数のパラメータが変数を受け入れることができる以上、1つの関数は別の関数をパラメータとして受け入れることができ、この関数を高次関数と呼ぶ.単純な高次関数:
def add(x, y, f):
    return f(x) + f(y)

add(−5,6,abs)を呼び出すと,パラメータx,y,fはそれぞれ−5,6,absを受け入れ,関数定義に基づいて計算過程を導くことができる.
x = -5
y = 6
f = abs 
f(x) + f(y) == > abs(-5) + abs(6) == > 11
return 11