폐쇄! ! !

종결 정의 : 변수 중첩 기능, 외부 함수 내부 함수라고

코드의 첫 조각을 이동

데프 FUNC () = 1
     데프 new_func () :
         인쇄 (a)
     리턴 new_func 
새로운 =의 FUNC ()를
 인쇄 (신규) 
새로운 () 

# 打印: 
<. 함수 FUNC <열차> 0x000001DC5B9EB948에서 .new_func> 
1

최대 읽기 :

함수 호출 내부 내부 기능 동원되지 아니하기 때문에 외부 함수 FUNC 호출 외부 함수의 변수 A를 할 때, 
외부 기능을 수행하기 위해 호출되는 로컬 이름 공간을 저장하는 메모리에 저장된 a've,

도보 함수 내부 함수 이름, 함수는 동일한 이름을 상기 메모리 어드레스가 함수 내부 함수 이름에 저장된에서 함께 로컬 이름 공간에 저장되고
, 그 변수를 우리가 직접 함수 외부 내부 함수의 메모리 어드레스를 리턴 이번에 이름, 새로운 객체가 수신 될 때,

그때마다 우리는 새로운 객체 이름을 사용 더하기 () 직접 함수의 내부 메모리 저장을 해결할 수있는 호출하고, 항상 모든 때문에, 외부 함수를 호출 할 필요가 없습니다 그것은 메모리에 첫 번째 호출은 항상 새로운, 사용 가능한 메모리 될 것입니다 만들 것입니다.
폐쇄 이점 함수의 상태 정보를 저장하는 것, 기능 정보의 로컬 변수가 여전히 저장 될 수있는
본 플로차트는 전체의 폐쇄 후에 실행될

의 정상적인 함수 호출 무엇인지 살펴 보자 :

데프 FUNC () = 1
     데프 new_func () :
         인쇄 (a) 
    new_func () 
FUNC () 


# 打印 
1

 

새로운 FUNC 메모리 주소로 어떤 물체 점, 그것은 전역에서 직접 호출 할 수 없습니다 전역 이름 공간이 그것에게 당신이 그것을 얻기 위해 필요, 그래서 모든 시간을 만들었다 때문에 모든 호출을 만들 수 있도록, 당신은 외부 함수를 호출 할 필요가 메모리는 항상 새로운, 사용 가능한 메모리 될 것입니다.

 

 

 

 

 

 

추천

출처www.cnblogs.com/aizhinong/p/11355463.html