개발자 블로그

[윤성우의 열혈 파이썬 중급편] - 19. 네스티드 함수와 클로져 본문

파이썬/윤성우의 열혈 파이썬 중급편

[윤성우의 열혈 파이썬 중급편] - 19. 네스티드 함수와 클로져

hayongwoon 2022. 5. 17. 15:38

함수를 만들어서 반환하는 함수, 파이썬은 모든 것이 객체이기에 함수를 반환하는 함수를 만들 수 있다. 따라서 함수 안에 정의 된 함수를 네스티드 함수라고 한다.

함수 안의 함수 - 네스티드 함수 예제

여기서 m이라는 변수를 잘 살펴보자. f1이라는 객체를 만들 때, m=2라는 변수에 참조했다. 그리고 다시 f1(7)이라고 했는데, 네스티드 함수의 안을 보면 변수 m에 대해 따로 정의한 것이 없다.  그런데 네스티드 함수에서 어떻게 밖에 있는 변수를 참조해서 가져올까? 바로 클로저라는 테크닉을 사용한다고 한다. 

 

정리

  • 네스티드 함수 - 함수 안에서 정의 된 함수
  • 클로저 - 네스티드 함수 밖에서 정의 된 변수를 참조하여 사용할 때 쓰는 기술 

저장된 위치 확인

보다시피 다소 복잡한 곳에 따로 저장을 해둔 것을 확인 할 수 있다. 클로져라는 변수의 0번 째 인덱스 안의 cell_contents라는 변수에 저장!

결론은 클로저라는 기술은 네스티드 함수가 함수 밖의 변수를 참조하여 사용할 때 쓰는 기술로 '함수 밖의 변수를 어딘가에 저장해두는구나' 라고 기억하면 될 것 같다.