2016-08-03 58 views
3

在Java中,使用close()方法通過移除作用域對象來釋放資源。我很困惑這是什麼樣的Python等價物?什麼是Java中的close()的Python等價物?

  • Python的垃圾回收器會自動執行此操作嗎?
  • 是否del方法?
  • 我應該使用with聲明嗎?

任何幫助將不勝感激。

編輯:我的目標是在需要時明確刪除類對象,而不是文件對象。

+0

http://stackoverflow.com/questions/19747371/python-exit-commands-why-so-many-and-when-should-each-be-used do this help help? – AgataB

+0

@AgataB不是真的 – Sajid

+0

你有具體的用例需要嗎?你能詳細說明嗎? Python的使用通常不會涉及手動清零實例(您稱之爲類對象)。 ** weakref **可能有興趣,以避免他們堅持。 **與**是**不是**適當的構造,因爲它在**實例的上下文中操作**,旨在釋放由實例持有的**資源**。我從來沒有見過任何認真編寫的Python代碼直接使用** gc ** - 並不是說​​它永遠不應該完成,但它是一個很好的理由。 –

回答

0

我應該使用with語句嗎?

是,根據the documentation

它與文件對象打交道時使用關鍵字用好的做法。這有一個好處,就是文件在套件結束後可以正常關閉,即使在路上出現異常。它也比編寫等效的try-finally塊短得多:

0

你會找到你的答案here:在你的代碼之前放置gc.collect()。

+0

這是否也會刪除未使用的類對象? – Sajid

+0

爲此,下面的討論可能是有趣的:http://stackoverflow.com/questions/693070/how-can-you-find-unused-functions-in-python-code。 – datahero

+0

看來你需要使用額外的工具(pyflakes和禿鷲)。 – datahero

0

ICart的評論適用於許多不同的情況。但是,關於一般對象的創建和處理,我認爲this other thread提供了python處理其對象(引用計數)以及垃圾收集進來的相當好的解釋。

相關問題