[Python] 클로저(Closure)
파이썬은 함수 안에 새로운 함수를 정의할 수 있습니다. 이를 내부 함수라 합니다.
def outer(a, b):
def inner(c, d):
return c + d
return inner(a, b)
이때, 내부 함수로 인해서 생기는 중요한 이슈가 있습니다.
- '내부 함수'는 자신의 스코프를 벗어나서 '외부 함수'의 변수에 접근할 수 있다.
- '내부 함수'는 '외부 함수'의 반환 값으로 사용될 수 있다.
위의 이슈를 담고 있는 예제를 살펴보겠습니다.
def print_msg(msg):
def inner():
print(msg);
return inner
print_msg() 함수가 종료되면 매개변수로 넘어온 msg는 사라져야되는데 '내부 함수'에서 해당 변수를 참조하고 있습니다. 거기다 print_msg() 함수는 내부 함수 객체를 리턴합니다. 내부 함수가 외부 함수의 지역 변수를 참조함으로써 외부 함수가 소멸된 이후에도 소속 지역 변수가 사라지지 않는 이슈를 클로저(Closure)라고 합니다.
'Programming > Python' 카테고리의 다른 글
[Python] 파일 입출력 (0) | 2019.06.11 |
---|---|
[Python] private 네임 맹글링 (0) | 2019.06.10 |
[Python] 클래스(class) (0) | 2019.06.10 |
[Python] 컴프리헨션(Comprehension) (0) | 2019.06.07 |
[Python] list, tuple, dictionary, set 자료구조 (0) | 2019.06.05 |
댓글
이 글 공유하기
다른 글
-
[Python] private 네임 맹글링
[Python] private 네임 맹글링
2019.06.10 -
[Python] 클래스(class)
[Python] 클래스(class)
2019.06.10 -
[Python] 컴프리헨션(Comprehension)
[Python] 컴프리헨션(Comprehension)
2019.06.07 -
[Python] list, tuple, dictionary, set 자료구조
[Python] list, tuple, dictionary, set 자료구조
2019.06.05