Angular, Blockchain, Science とか

Angular, Blockchain, Science全般 の情報を主に書いていきます。

Python クロージャ 

Pythonでのクロージャとラムダ関数についてまとめます。インタープリタで確認すればいいかと。

クロージャ

関数内関数。
クロージャとは他の関数によって動的に生成される関数、関数外の変数の値を覚えていたり、変えたりできる。
まず関数内関数を見てみる。

def out(a, b):
    def in(c, d):
        return c + d
    return in(a, b)

>>> out(4, 6)
10

上のコードは普通に理解できると思う。

def outer(comment):
    def inner():
        return comment
    return inner

# a, b はクロージャ
a = outer('Hello')
b = outer('Python')

# a, b はcommentの内容を覚えている
>>>a()
'Hello'
>>>b()
'Python'