[Python] 내장함수(inner function)와 클로저(closure)

손종일·2020년 8월 22일
0

Python

목록 보기
7/13
post-thumbnail

내장 함수 (inner function)

일급 객체의 특징 중 함수 내부에 함수를 정의할 수 있는데 이를 내부 함수 또는 내장 함수라고 부르며 inner function은 아래와 같이 함수 안에 함수이다.
들여쓰기로 묶여있는 소스끼리 서로 자원공유가 가능한 지역변수의 특성을 말한다.

내장 함수(inner function)은 루프나 코드 중복을 피하기 위해 또 다른 함수 내에 어떤 복잡한 작업을 한 번 이상 수행할 때 유용하게 사용한다.

def func1():
	def func2():
    statement
def outter_func(a, b):
	sum = a + b
	def inner_func(sum, c):
    	return sum + c
    return inner_func(sum ,a)
    
print(outter_func(1, 2))  // 결과: 4

클로저 (closure)

클로저는 다른 함수에 의해 동적으로 생성되는 함수이다. 또한 바깥 함수로부터 생성된 변수의 값을 변경하고, 저장할 수 있다.

def outter_func():
    sum = 3
    def inner_func(x):
        return sum + x 
    return inner_func
out = outter_func()

print(out(1), out(4))  // 결과: 4 7

이렇게 함수를 둘러싼 환경(지역 변수, 코드 등)을 계속 유지하다가, 함수를 호출할 때 다시 꺼내서 사용하는 함수를 클로저(closure)라고 합니다. 여기서는 out에 저장된 함수가 클로저입니다.

profile
Allday

0개의 댓글