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
'Computer Programming > AI' 카테고리의 다른 글
TIL_When to use Redis? (1) | 2023.11.20 |
---|---|
TIL_Generator란? (0) | 2023.11.16 |
TIL_정적 타입(Static Typing)과 동적 타입(Dynamic Typing) (0) | 2023.11.16 |
TIL_Interpreter와 Compiler란? (0) | 2023.11.10 |
Python의 parameter와 argument의 차이점은? (0) | 2023.11.10 |