클로저
1. 클로저
클로저는 파이썬에만 있는 개념이 아니라 다른 프로그래밍 언어에서도 중요한 프로그래밍 개념으로, 함수 내 함수가 외부 변수를 참조하여 보존하는 것을 얘기합니다.
위 1번 예제에서는 inner_function
이 외부 변수를 참조하고 있진 않습니다. 함수를 반환하니 고차함수이지만, 클로저는 아닙니다.
2번 예제에서 outer_function
은 inner_function
을 반환합니다. inner_function
은 외부 함수의 변수 x
를 참조하고 있습니다. 따라서, outer_function
을 호출하면 x = 10
이라는 상태를 기억하는 클로저가 됩니다.
closure(5)
를 호출하면 inner_function(5)
를 호출하는 것과 동일한 결과를 얻게 됩니다. 이는 클로저가 inner_function
의 코드뿐만 아니라 x = 10
이라는 상태도 '기억'하고 있기 때문입니다.
2. 클로저의 활용
클로저는 외부에서 직접 접근할 수 없는 변수를 '감추는' 방법을 제공합니다. 이를 통해 데이터 은닉과 캡슐화를 구현할 수 있습니다. 아래 코드에서 count 변수를 밖에서 수정할 수 있지 않습니다.
또한 클로저는 함수를 반환하기 때문에 함수형 프로그래밍과 데코레이터의 구현에 필수적입니다. 데코레이터는 뒤에 바로 챕터에서 이어 설명하도록 하겠습니다.