次のコードのテストについて、これについて質問があります。
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の終了後、ファイルは自動的に閉じられました。
これを説明してもらえますか?ありがとう。