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

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

如何在Python中安全地刪除多個已定義和未定義的變量?

如何在Python中安全地刪除多個已定義和未定義的變量?

冉冉說 2024-01-27 14:56:28
我目前正在使用jupyter筆記本,我想刪除僅在單元格內使用的變量,這樣我就不會意外地在其他單元格中濫用這些變量。例如,我想刪除以下代碼中的變量myvar和循環變量:istart = 1stop = 2for i in range(start, stop):    passmyvar = "A"# other statements# ...del i, myvar # Runs ok, and variables i and myvar are deleted and I won't accidentally use i or myvar in another jupyter notebook cell這工作得很好,但在某些情況下,某些變量實際上沒有定義。在下面的示例中,這會引發錯誤,因為i未定義,因為循環從未運行。定義的變量myvar不會被刪除。start = 1stop = 1 # Now we have stop equal to 1for i in range(start, stop):    passmyvar = "A"# other statements# ...del i, myvar # NameError, since i is not defined, and myvar is not deleted我已經使用contextlib或try- except語句來避免錯誤,但仍然myvar沒有被刪除。import contextlibstart = 1stop = 1for i in range(start, stop):    passmyvar = "A"# other statements# ...with contextlib.suppress(NameError):    del i, myvar # Error suppressed, but myvar is not deleted唯一的解決方法是為每個要刪除的變量包裝 del 語句。import contextlibstart = 1stop = 1for i in range(start, stop):    passmyvar = "A"# other statements# ...with contextlib.suppress(NameError):     del iwith contextlib.suppress(NameError):     del myvar# ...# It works but codes get messy if I need to delete many variables然而,這會使代碼變得混亂,尤其是當您有很多變量需要刪除時(如果有 n 個變量則需要刪除 n 行)。有沒有辦法用一兩行代碼安全地刪除所有已定義和未定義的變量,并減少混亂的代碼?
查看完整描述

3 回答

?
慕妹3146593

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

您可以使用“del”后面的逗號分隔列表,del var1, var2, var3, 來刪除選定的變量。



查看完整回答
反對 回復 2024-01-27
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

安全地做一件事del x

globals().pop('x', None);

有很多方法可以做到這一點,但它們需要超過 1 行代碼,我想這不是您想要的。請注意;最后,這可以防止 Jupiter 打印該變量。


查看完整回答
反對 回復 2024-01-27
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

您可以通過檢查變量是否在globals()or中來檢查變量是否確實存在,而不是抑制錯誤locals()。不過,您必須操作字符串名稱并形成一個del語句來使用 執行它exec。


to_delete = ['i', 'myvar']

for _var in to_delete:

    if _var in locals() or _var in globals():

        exec(f'del {_var}')


查看完整回答
反對 回復 2024-01-27
  • 3 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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