かべぎわブログ

技術的なことについてかけたらいいな…

Pythonで関数の中に関数を宣言してクロージャとしてつかってみる

概要

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

おわりに

ちょっとむずかしい

詳細! Python 3 入門ノート

詳細! Python 3 入門ノート