在Python中,如果您不调用即可打开文件close()
,或者不使用try
- finally
或“ with
”语句而关闭文件,这是问题吗?还是依靠Python垃圾回收来关闭所有文件作为一种编码实践就足够了?例如,如果这样做:
for line in open("filename"):
# ... do stuff ...
...这是一个问题,因为文件永远无法关闭,并且可能发生阻止文件关闭的异常吗?还是for
由于文件超出范围而肯定会在声明结束时将其关闭?
for
块和函数/类/模块之间的区别无关。比这要简单得多:对象没有作用域,只有名称有作用域。没有引用此对象的名称,因此这里没有任何东西可以留在范围内或超出范围。
for
循环与某个范围相关联,并提到该文件由于完全不同的原因而被关闭。它没有涉及Python的作用域,因为它在这里无关紧要。
for
。它的引用计数将为零,从而使其自动关闭,但是只有函数,类和模块定义了Python中的作用域,而没有其他复合语句。