21 / 2777%

LESSON 21 ・ 関数

第一級関数

関数を変数に代入する

a = abs(-2)
print(a)

前に絶対値を計算する関数absを使いました。

a = abs
b = a(-2)
print(b)

Pythonでは、abs(-2)のように関数に値を渡して呼び出すだけでなく、absという関数そのものを変数に代入することができます。変数に代入された関数は( )で値を渡して呼び出すことができます。

ここでは関数absを変数aに代入し、a(-2)で呼び出しています。

def square(x):
    return x * x

a = square
b = a(3)
print(b)

自分で定義した関数も、同じように変数に代入できます。

このように、Pythonでは関数を数値や文字列と同じように値として扱えます。このような性質を持つ関数を第一級関数(だいいっきゅうかんすう, first-class function)と呼びます。

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

整数を2乗する関数squareを定義し、その関数自体を変数fに代入してください。f(5)の結果を表示してください。

答えと解説を見る

模範解答

def square(x):
    return x * x

f = square
print(f(5))

関数を呼び出す( )を付けずにsquareと書くと、関数そのものを変数へ代入できます。fからも同じ関数を呼び出せます。

問題2

絶対値を求める関数absを変数fに代入し、f(-8)の結果を表示してください。

答えと解説を見る

模範解答

f = abs
print(f(-8))

組み込みの関数も変数へ代入できます。変数f-8を渡して呼び出すと、絶対値の8が返されます。

問題3

整数を2倍する関数doubleと、整数を1増やす関数add_oneを定義してください。二つの関数を一つのリストにまとめ、それぞれに5を渡した結果を表示してください。

答えと解説を見る

模範解答

def double(x):
    return x * 2

def add_one(x):
    return x + 1

functions = [double, add_one]
print(functions[0](5))
print(functions[1](5))

関数は値として扱えるため、リストの要素にもできます。結果は106です。