더북(TheBook)

함수가 클로저로 생성되었을 때의 놀라운 동작

>>> def make_adders(addends):
...     funcs = []
...     for addend in addends:
...         funcs.append(lambda x: x + addend)        # ➊
...     return funcs
...
>>> adders = make_adders([10, 100, 1000])             # ➋
>>> for adder in adders:
...     print(adder(5))
...
1005
1005
1005

➊ 여기서 lambda는 특별한 동작을 하지 않습니다. def adder 내부 함수를 정의하여 같은 동작을 하게 할 수 있습니다.

adders가 함수의 목록이라는 점에 주목하세요. 목록의 함수들은 순환 안에서 호출됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.