[python] 클로저를 사용하여 어떻게 상태를 유지할 수 있나요?

클로저를 사용하여 상태를 유지하는 예제를 살펴보겠습니다.

def counter():
    count = 0
    
    def increment():
        nonlocal count
        count += 1
        return count
    
    return increment

# 클로저 함수를 생성합니다.
counter_func = counter()

# 상태 유지 및 조작을 통해 호출할 때마다 숫자가 증가합니다.
print(counter_func()) # Output: 1
print(counter_func()) # Output: 2
print(counter_func()) # Output: 3

위 예제에서 counter 함수는 내부에 count라는 변수를 선언하고, 이 변수를 조작하는 increment 함수를 정의합니다. increment 함수는 nonlocal 키워드를 사용하여 count 변수를 참조하고 수정할 수 있도록 지정합니다.

counter 함수를 호출하여 counter_func라는 클로저 함수를 반환받습니다. counter_func 함수를 호출할 때마다 내부의 count 변수가 조작되어, 상태가 유지되고 숫자가 증가하게 됩니다.

클로저를 사용하면 함수와 상태를 하나의 단위로 캡슐화하여 유용한 패턴을 구현할 수 있습니다. 클로저를 자유롭게 사용하면 상태를 유지하고 공유하는 데 편리하게 활용할 수 있습니다.

참고자료: