在测试以下代码时,我对此有疑问:
1、
def file_close_test():
f = open('/tmp/test', 'w+')
if __name__ == '__main__':
file_close_test()
# wait to see whether file closed.
import time
time.sleep(30)
2、
def file_close_on_exc_test():
f = open('/tmp/test', 'w+')
raise Exception()
def exception_wrapper():
try:
file_close_on_exc_test()
except:
pass
# wait to see whether file closed.
import time
time.sleep(10)
if __name__ == '__main__':
exception_wrapper()
import time
time.sleep(30)
- 文件对象在file_close_test退出时关闭,因为没有引用它。
- 引发异常后,文件对象没有关闭。所以我认为相关的堆栈数据没有释放。
- exception_wrapper退出后,文件自动关闭。
你能为我解释一下吗?谢谢。