Computer Programming/AI

TIL_Closure란?

JYCoder 2023. 11. 16. 12:39

Python에서 Closure은 함수 내에서 다른 함수를 정의하고, 이 내부 함수가 외부 함수의 local variable을 기억하고 있다가 외부 함수의 실행이 끝난 후에도 그 변수에 접근할 수 있게 만드는 메커니즘이다.

 

def outer_function(x):
    # 외부 함수의 지역 변수
    def inner_function(y):
        return x + y  # outer_function의 x에 접근 가능

    return inner_function  # inner_function을 반환

closure_instance = outer_function(10)  # outer_function을 호출하여 closure_instance에 할당

result = closure_instance(5)  # closure_instance를 호출하여 inner_function 실행
print(result)  # 출력 결과: 15

 

위의 예제 코드에서 처럼, outer_function은 inner_function을 정의하고 반환한다. inner_function은 outer_function의 local variable 'x'에 접근할 수 있다. outer_function(10)을 호출하면 closure_instance에 inner_function이 할당되고, 이후에 closure_instance(5)를 호출하면 inner_function이 실행되면서 'x'는 10이 유지되어 5를 더한 결과 값 15를 ruturn 한다.

 

 

Closure의 유용성:

  • local variable 보존: closure 사용시, 함수가 호출될 때 생성된 local variable을 계속 유지
  • 캡슐화: 함수 내부의 일부 코드를 외부에서 접근할 수 없게 만들어 정보 은닉을 가능하게 함, 함수 내부의 상태를 안전하게 보호
  • 콜백 함수로 활용: 외부 함수에서 내부 함수를 반환하고, 반환된 내부 함수가 외부 함수의 상태를 기억하는 이러한 패턴으로 콜백 함수를 간결하게 작성할 수 있음

 

즉, Closure은 python에서 함수형 프로그래밍이나 콜백 기능을 구현하고, 코드의 가독성과 유지 보수성을 높일 수 있다.

LIST