2009-06-24 3 views

답변

18

예 아니요. 객체는 foo를 떠난 후에 파손될 것입니다 (다른 객체에 대한 참조가없는 한). 즉각적인 객체인지 여부는 구현 세부 사항이며 다양합니다.

CPython (표준 파이썬 구현)에서는 refcounting이 사용되므로 항목이 즉시 삭제됩니다. 객체에 순환 참조가 포함되거나 참조가 둘러싸는 프레임에 보관되는 경우 (예 : 프레임의 변수에 대한 참조를 유지하는 예외가 발생하는 경우)와 같은 몇 가지 예외가 있습니다.

Jython과 같은 임 플레 멘 테이션 그러나 IronPython의 경우 가비지 수집기가 시작될 때까지는 객체가 마무리되지 않습니다.

따라서 객체의 적시 종료에 의존해서는 안되며 객체의 적시 종료에 의존하면 안됩니다. 마지막 참조가 간다. 어휘 범위에 따라 정리가 필요하면 명시 적으로 정리 메소드를 호출하거나 파이썬 2.6에서 새 with statement ("from __future__ import with_statement"2.5로 사용 가능)을 살펴보십시오.

+2

+1 : 변수 'a'는 즉시 제거되는 네임 스페이스에 있습니다. 이것은 참조 횟수를 감소시키는 것입니다. 변수는 스택 형 구조로 존재합니다. 기본 객체는 그렇지 않습니다. –

관련 문제