• 関数内関数

    関数内関数について学んでいきましょう。

    関数内関数とは、その名の通り関数の中に関数を持つことです。

    関数内関数の具体例

    具体的なコードで理解していきましょう。

    コード
    

    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が出力されるのです。

    関数内関数のイメージ

    イメージで考えた方が分かりやすいと思いますので、関数内関数のイメージをみてみましょう。

    関数内関数のイメージ

    結局は関数が順場に呼び出されて実行されているだけです。

    この関数内関数を少し応用したものがクロージャです。ぜひ参考にしてみて下さい。