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))
関数は値として扱えるため、リストの要素にもできます。結果は10と6です。