在Java中,使用close()
方法通过移除作用域对象来释放资源。我很困惑这是什么样的Python等价物?什么是Java中的close()的Python等价物?
- Python的垃圾回收器会自动执行此操作吗?
- 是否
del
方法? - 我应该使用
with
声明吗?
任何帮助将不胜感激。
编辑:我的目标是在需要时明确删除类对象,而不是文件对象。
在Java中,使用close()
方法通过移除作用域对象来释放资源。我很困惑这是什么样的Python等价物?什么是Java中的close()的Python等价物?
del
方法?with
声明吗?任何帮助将不胜感激。
编辑:我的目标是在需要时明确删除类对象,而不是文件对象。
我应该使用with语句吗?
是,根据the documentation:
它与文件对象打交道时使用关键字用好的做法。这有一个好处,就是文件在套件结束后可以正常关闭,即使在路上出现异常。它也比编写等效的try-finally块短得多:
ICart的评论适用于许多不同的情况。但是,关于一般对象的创建和处理,我认为this other thread提供了python处理其对象(引用计数)以及垃圾收集进来的相当好的解释。
http://stackoverflow.com/questions/19747371/python-exit-commands-why-so-many-and-when-should-each-be-used do this help help? – AgataB
@AgataB不是真的 – Sajid
你有具体的用例需要吗?你能详细说明吗? Python的使用通常不会涉及手动清零实例(您称之为类对象)。 ** weakref **可能有兴趣,以避免他们坚持。 **与**是**不是**适当的构造,因为它在**实例的上下文中操作**,旨在释放由实例持有的**资源**。我从来没有见过任何认真编写的Python代码直接使用** gc ** - 并不是说它永远不应该完成,但它是一个很好的理由。 –