Python3入門 関数内関数

関数の中に関数

 

関数を他の関数の中で定義することができます。

例 1:2つの値を足した結果を返すプログラムです。

 

この関数が実行される順番は、外 ⇒ 内 流れです。

例2:実引数で指定した文字列を、元々ある文字列と連結し、返すプログラムです。

 

 

クロージャ(やや難)

 

クロージャとは、他の関数によって動的に生成される関数で、その関数の外で生成された変数の値を記憶変更できます。

 

先ほどの 例2 と同じ結果になる関数を定義し、これを書式とします。

 

  • moji2( )関数 は、仮引数を指定せず、外関数の 仮引数 a を使う。
  • moji( )関数 の戻り値は、moji2( )関数 を呼び出すのではなく、関数オブジェクトとして呼び出し元に返します。

 

 

プログラムの説明

  1. moji2( )関数 は、moij( )関数 に渡された、実引数:”面白い” を記憶します
  2. return moji2 で関数オブジェクトを呼び出し元に返すので、変数 nmoji2 の関数オブジェクトが代入されます。( n = moji2 )
  3.  n( )関数 は moji2( )関数 を呼び出したのと同じなります。

 

この場合の変数 n をクロージャと呼びます。 

 

フォローする

スポンサーリンク


Python

Posted by pythonista