프로그래밍을 공부한 대부분의 학생들은 '폐쇄'라는 단어에 익숙하지만, 여전히 이해하기 어려운 경우도 있다고 생각합니다. 먼저 정의를 살펴보겠습니다.
클로저는 함수와 관련 참조 환경으로 구성된 엔터티입니다. 예를 들어, 참조 리소스에는 다음과 같은 정의가 있습니다. 깊은 제약 조건을 구현할 때 참조 환경을 명시적으로 표현할 수 있는 것을 생성하고 이를 관련 서브루틴과 함께 번들링해야
결과 전체는 다음과 같습니다. 폐쇄라고 불렀습니다.
파이썬 클로저(closure)는 사실 별로 복잡한 것이 아닙니다.
일반인의 관점에서: 내부 함수에서 외부 범위(전역 범위는 아님)의 변수가 참조되면 내부 함수는 클로저로 간주됩니다. 이는 이름(변수)으로 참조되는 "내부" 함수에 지나지 않으며 이 이름(변수)은 이를 포함하는 "외부" 함수에 대한 지역 변수입니다.
이 글을 읽은 후에도 클로저가 무엇인지 이해하지 못할 수도 있습니다. 다음의 작은 예를 읽고 나면 확실히 이해하게 될 것입니다.
#!/usr/bin/env python
#coding=utf-8
# http://www.pythontab.com
#함수 정의
def plus(number):
#함수 내부에 다른 함수를 정의합니다. 실제로 내부 함수는 클로저로 간주됩니다.
def plus_in(number_in):
#여기에 number_in 변수를 인쇄합니다.
print str(number_in) + "rn"
return number+number_in
#사실 여기서 반환되는 것은 클로저의 결과입니다.
return plus_in
#plus 함수에 값을 할당합니다. 이 20은 매개변수 번호입니다
v1=plus(20)
print v1(100) # 여기서 100은 실제로 number_in
매개변수를 제공하고 결과를 실행합니다.
100
120
참고: 100은 다음과 같이 인쇄됩니다. print str(number_in) + "rn" 결과