python如何关闭已经gc'ed的文件?

Jas*_*ker 15 python garbage-collection file del

我一直认为如果一个文件在没有关闭的情况下被打开就会泄漏,但我只是验证了如果我输入以下代码行,该文件将关闭:

>>> f = open('somefile.txt')
>>> del f
Run Code Online (Sandbox Code Playgroud)

出于纯粹的好奇心,这是如何工作的?我注意到该文件不包含__del __方法.

hab*_*bit 20

在CPython中,至少在取消分配文件对象时关闭文件.请参阅CPython源代码中的file_dealloc函数Objects/fileobject.c.Dealloc方法类似于__del__C类型,除了没有一些固有的问题__del__.