概要
Pythonでは関数の中に関数を宣言するとそれはクロージャとして動作します。
ためしにやってみます。
スクリプト例
以下のようにouter()
という関数の中でinner()
という関数を宣言しています。
そしてreturnでinner
の関数そのものを返しています。
def outer(wawawa): def inner(): return '%s' % wawawa return inner result_func = outer(wawawa='AAA') print(result_func) print(result_func())
実行してみる
実行してみるとこんなかんじ。
result_funcには関数そのものがはいっていて、それを実行することで結果を得ることができます。
また、result_func()
が引数としてAAAが渡されたということも記憶しています。
$ ./closure.py <function outer.<locals>.inner at 0x10d521d90> AAA
おわりに
ちょっとむずかしい
- 作者: 大重美幸
- 出版社/メーカー: ソーテック社
- 発売日: 2017/05/24
- メディア: 単行本
- この商品を含むブログを見る