関数内関数について学んでいきましょう。
関数内関数とは、その名の通り関数の中に関数を持つことです。
関数内関数の具体例
具体的なコードで理解していきましょう。
コード1 def outer(a):
2 def inner(b):
3 print(b * 5)
4 return
5 return inner(a)
6 outer(5)
アウトプット25
コードの解説(1) 1行目でouter関数を定義しています。この関数は引数aを取ります。
(2) 2行目で、outer関数の中にinner関数を定義しています。この関数は引数bを取ります。
(3) 3行目で、inner関数は引数bを5倍した数字を出力します。
(4) 5行目で、outer関数は戻り値としてinner関数を実行したものを返します。
ここでのポイントは5行目です。関数を戻り値とするというのはイメージが湧きづらいですが、やっていることはinner関数の実行結果を返しているだけです。
今回の場合、inner関数を返す時に、aを引数としていますが、このaは6行目でouter関数を実行した時の引数5です。
つまり、5行目はinnner(5)の結果が戻り値になります。
inner(5)を実行すると、5 * 5 = 25を集力する命令がありますので、25が出力されるのです。
関数内関数のイメージ
イメージで考えた方が分かりやすいと思いますので、関数内関数のイメージをみてみましょう。
結局は関数が順場に呼び出されて実行されているだけです。
この関数内関数を少し応用したものがクロージャです。ぜひ参考にしてみて下さい。