으아악
우리 모두는 x > 0일 때 else 문이 실행되지 않는다는 것을 알고 있습니다.Python은 해석된 언어입니다. 함수의 경우 예 1
1. Java의 경우 test1() 코드 행이 test1 함수 호출을 실행하지 않으면 기본적으로 전체 프로그램이 의미가 없으며 메모리 할당도 실행되지 않습니다. Python의 경우 test1 함수 개체가 생성된 다음 test1의 일련의 작업이 저장됩니다. 이러한 작업은 전체 프로그램이 test1을 호출하지 않더라도 test1은 항상 존재합니다. 프로그램이 메모리에서 끝나지 않기 때문입니다.
이유로 프로그램이 실행된 후 test1 함수는 현재 모듈 객체의 속성, 즉
이 됩니다.
3. 함수 이름 'test1'은 이 함수 객체를 참조하므로 함수가 호출되지 않더라도 가비지 수집 메커니즘은 이를 재활용하지 않습니다module __main__
중첩 함수 예시 2
PHP中文网2017-06-12 09:27:49
앞으로 이 질문을 두 가지 질문으로 나누는 것이 좋습니다.
(1) 이 함수는 호출되지 않습니다. Python에는 또 다른 메모리 관리 전략인 참조 계산이 있습니다. "원리: 객체가 다른 객체에 의해 참조되는 횟수를 기록합니다. 이 객체에 대한 참조가 제거되면 참조 횟수도 계산됩니다. 0으로 감소하면 개체가 해제됩니다." 그래서 내 생각에는 참조 계산 중에 재활용되어야 했던 것 같습니다.
(2) 호출 여부는 객체에 대한 참조가 제거되었는지 여부와 참조 주기가 있는지 여부에 따라 다릅니다. 여기 이메일 토론 스레드에 비슷한 토론이 있으므로 귀하의 질문에 대한 답변이 될지 모르겠습니다.