亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

del什么時候在python中有用?

del什么時候在python中有用?

江戶川亂折騰 2019-07-15 09:51:12
del什么時候在python中有用?我真的想不出為什么python需要del關鍵字(而且大多數語言似乎沒有類似的關鍵字)。例如,與其刪除變量,不如只分配None敬它。當從字典中刪除時,del方法可以添加。有什么理由del在python中,還是Python垃圾前收集時代的遺跡?
查看完整描述

3 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

首先,除了局部變量之外,您還可以建立其他模型。

del list_item[4]del dictionary["alpha"]

這兩者顯然都是有用的。其次,使用del在局部變量上,意圖更加清晰。比較:

del foo

foo = None

我知道在.的情況下del foo目的是從作用域中刪除變量。還不清楚foo = None就是這么做。如果有人剛剛foo = None我可能認為是死代碼。但我馬上就知道del foo想要做的事。


查看完整回答
反對 回復 2019-07-15
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

有一部分是什么del做(從)Python語言引用):

刪除名稱將從本地或全局命名空間中刪除該名稱的綁定。

分配None不能從名稱空間中移除名稱的綁定。

(我想可能會有一些爭論,關于移除名稱綁定是否實際上是有用但這是另一個問題。


查看完整回答
反對 回復 2019-07-15
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

有一個具體的例子說明您應該在什么時候使用del(也許還有其他人,但我知道這件事是隨手發生的)當你使用的時候sys.exc_info()檢查異常。此函數返回元組、引發的異常類型、消息和回溯。

前兩個值通常足以診斷錯誤并對其進行操作,但第三個值包含引發異常和捕獲異常之間的整個調用堆棧。特別是,如果你做了這樣的事情

try:
    do_evil()except:
    exc_type, exc_value, tb = sys.exc_info()
    if something(exc_value):
        raise

回溯,tb在調用堆棧的局部變量中結束,創建一個不能被垃圾收集的循環引用。因此,重要的是:

try:
    do_evil()except:
    exc_type, exc_value, tb = sys.exc_info()
    del tb    if something(exc_value):
        raise

若要打破循環引用,請執行以下操作。在許多情況下,您會想要調用sys.exc_info(),就像元類魔法,回溯很有用,所以您必須確保在可能離開異常處理程序之前清理它。如果您不需要追溯,您應該立即刪除它,或者只執行以下操作:

exc_type, exc_value = sys.exc_info()[:2]

一起避免這一切。


查看完整回答
反對 回復 2019-07-15
  • 3 回答
  • 0 關注
  • 976 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號