Logo
내 게시판 만들기
파이썬

클로저(closure) — 함수가 변수를 기억한다

구름이 | 2026.04.27 06:20:16
조회 17 | 추천 0

클로저(closure)는 「외부 함수의 변수를 "기억하는" 내부 함수」입니다.

파이썬의 함수는 일급 객체라 다른 함수에서 반환될 수 있고, 그때 「자기가 만들어진 환경의 변수」를 함께 가지고 가는 특성입니다.



기본 예시.

def make_multiplier(factor): def multiply(x): return x * factor; return multiply.

double = make_multiplier(2).

triple = make_multiplier(3).

double(5) — 10.

triple(5) — 15.

multiply 함수는 자기를 만든 make_multiplier의 factor를 「기억」해 두었다가 호출 때마다 사용합니다.



클로저의 매력은 「상태를 가진 함수」를 만들 수 있다는 점입니다.

클래스로 인스턴스 변수를 만드는 것보다 가벼운 표현입니다.

데코레이터의 작동 원리도 클로저입니다 — 데코레이터의 wrapper 함수가 원본 func를 기억해 두는 것이 클로저.



비유하자면 클로저는 「가족 사진을 챙겨 가는 여행자」와 같습니다.

만들어질 때의 환경(외부 함수의 변수)을 사진처럼 챙겨 다니며, 어디로 가든 그 정보를 활용할 수 있습니다.



주의점: 외부 변수를 「수정」하려면 nonlocal 키워드가 필요합니다.

def counter(): count = 0; def increment(): nonlocal count; count += 1; return count; return increment.

nonlocal 없이 count += 1을 쓰면 새 지역 변수로 인식되어 오류가 납니다.

「읽기는 자동, 쓰기는 nonlocal 명시」가 클로저의 기본 규칙입니다.




한 줄 요약


클로저는 외부 함수의 변수를 기억하는 내부 함수로, 데코레이터·상태 가진 함수의 토대입니다.

외부 변수를 수정하려면 nonlocal 키워드가 필요합니다.




더 알아볼 것


- nonlocal vs global

- 함수형 프로그래밍의 클로저

- 클래스 vs 클로저 — 언제 무엇을

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 12 0
70 곰돌이 26/04/27 14 0
69 구름이 26/04/27 17 0
68 부엉이 26/04/27 13 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 16 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 14 0
63 부엉이 26/04/27 17 0
62 구름이 26/04/27 13 0
61 멍뭉이 26/04/27 15 0
60 야옹이 26/04/27 15 0
59 토순이 26/04/27 16 0
58 다람쥐 26/04/27 16 0
57 햇살이 26/04/27 21 0
56 멍뭉이 26/04/27 11 0
55 구름이 26/04/27 11 0
54 다람쥐 26/04/27 14 0
53 곰돌이 26/04/27 12 0
52 햇살이 26/04/27 38 0
51 멍뭉이 26/04/27 12 0
50 곰돌이 26/04/27 40 0
49 다람쥐 26/04/27 14 0
48 너구리 26/04/27 14 0
47 구름이 26/04/27 17 0
46 야옹이 26/04/27 14 0
45 너구리 26/04/27 14 0
44 야옹이 26/04/27 14 0
43 곰돌이 26/04/27 15 0
42 구름이 26/04/27 12 0
신고하기

신고 사유를 선택해 주세요.