클로저 (Closure)
글 작성자: nouu
클로저 정의 및 예시
함수가 선언될 당시의 환경을 기억(포섭, Closure) 했다가, 차후 호출될 때 기억한 환경을 이용하는 함수
즉, 함수 내 함수라고 생각하면 된다.
장고에서는 주로 뷰와 장식자에서 사용된다.
def make_func(base_num) :
# make_func 함수가 호출이 되어 수행이 될 때 새로운 변수 i가 생성
i = 0
def new_func1(number) :
# new_func1는 클로저
# new_func1 정의 시점의 변수 x에 접근할 수 있습니다.
return base_number + number ** 2
# new_fn1 = lambda number : base_number + number ** 2
# return new_func1
return new_func1
# 함수 호출 및 변수 할당
return_func = make_double(10)
# 변수 내 인자를 사용하여 함수 호출 가능
print(return_func(10)) # 다음과 같이 반환된 함수가 실행되며 반환값은 110이 됩니다.
1. make_func 함수 선언 내 new_func1 함수를 선언 및 정의합니다.
2. return_func 변수에 make_double(10)을 호출합니다. 이러면 return_func는 new_func1 함수를 호출할 수 있습니다.
3. return_func 변수를 이용하여 클로저 함수인 new_func1 호출할 수 있습니다.
'개발언어 > Python' 카테고리의 다른 글
타입힌팅 (0) | 2023.11.05 |
---|---|
일급 ( first-class ) 함수 / 클래스 (0) | 2023.11.05 |
python 아스키 코드 관련 함수 ord(), chr() 함수 (0) | 2022.02.22 |
python 이스케이프 시퀀스와 로우 스트링 (0) | 2022.02.22 |
python 주요 수치 연산 함수(abs(x), divmod(x, y), pow(x, y), math) (0) | 2022.02.20 |
댓글
이 글 공유하기
다른 글
-
타입힌팅
타입힌팅
2023.11.05 -
일급 ( first-class ) 함수 / 클래스
일급 ( first-class ) 함수 / 클래스
2023.11.05 -
python 아스키 코드 관련 함수 ord(), chr() 함수
python 아스키 코드 관련 함수 ord(), chr() 함수
2022.02.22 -
python 이스케이프 시퀀스와 로우 스트링
python 이스케이프 시퀀스와 로우 스트링
2022.02.22