Python에서 클로저는 함수 실행이 완료된 후에도 함수가 생성된 환경을 "기억"할 수 있도록 하는 중요한 개념입니다. 클로저를 사용하면 전역 변수나 클래스 인스턴스를 사용하지 않고도 상태 저장 기능을 구현할 수 있습니다.
이 게시물에서는 nonlocal 키워드를 사용하여 간단한 카운터를 구현하여 클로저를 살펴보겠습니다. 자세히 살펴보겠습니다!
클로저는 중첩된 함수가 바깥쪽 범위의 변수를 참조할 때 발생하며, 바깥쪽 함수의 실행이 완료된 후에도 해당 변수에 대한 액세스를 유지할 수 있습니다. 클로저는 함수 내에서 상태나 동작을 캡슐화하려는 경우 특히 유용합니다.
Python에서는 nonlocal 키워드를 사용하여 전역이 아닌 가장 가까운 바깥쪽 범위의 변수를 수정합니다. nonlocal 키워드가 없으면 내부 함수는 바깥쪽 범위의 변수를 수정할 수 없습니다. 대신 새로운 지역 변수를 생성합니다. nonlocal 키워드는 바깥쪽 범위의 변수로 작업하고 싶다고 Python에 알려줌으로써 이 문제를 해결합니다.
전역 변수나 클래스에 의존하지 않고 클로저를 사용하여 개수를 추적하는 간단한 카운터 함수를 만들어 보겠습니다.
내부 함수 증분을 반환하는 make_counter라는 함수를 생성하겠습니다. 내부 함수는 호출될 때마다 count 변수를 증가시킵니다.
increment 함수가 make_counter 함수 범위에 정의된 count 변수를 수정하는지 확인하기 위해 nonlocal 키워드를 사용합니다.
구현은 다음과 같습니다.
def make_counter(): count = 0 # Variable in the enclosing scope def increment(): nonlocal count # Tell Python to modify the `count` from the enclosing scope count += 1 # Increment the counter return count # Return the current count return increment # Return the inner function, which forms the closure
이제 make_counter 함수가 있으므로 카운터 인스턴스를 만들고 여러 번 호출하여 카운터 증가를 확인할 수 있습니다.
counter = make_counter() print(counter()) # Output: 1 print(counter()) # Output: 2 print(counter()) # Output: 3 print(counter()) # Output: 4 print(counter()) # Output: 5
클로저는 함수 내에 상태를 캡슐화하는 강력하고 우아한 방법을 제공합니다. 다음과 같은 시나리오에서 특히 유용합니다.
클로저는 데코레이터, 메모, 콜백과 같은 고급 사용 사례에 사용할 수 있습니다.
위 내용은 Python의 클로저 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!