글 작성자: 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 호출할 수 있습니다.