2014-09-22 203 views
-2

所以我用globals()打,並試圖此:如何刪除全局變量字典?

del globals() 

日期:

SyntaxError: can't delete function call 

如何刪除全局變量的詞典嗎?它是否只能通過函數調用訪問,以至於無法刪除?

編輯:我知道這是一個壞主意,我不打算使用它。我只想知道這是否可能,如果不是,我想知道爲什麼。

+2

你的德爾蟒蛇錯誤的概念。刪除引用,而不是對象。 – simonzack 2014-09-22 10:33:13

+1

爲什麼要「刪除全局變量字典」?你的意思是什麼? – interjay 2014-09-22 10:40:25

+0

@interjay:知識,沒有別的:) – 2014-09-22 10:55:26

回答

1

刪除對globals()的引用將不會刪除該字典。您可以像這樣清除字典

globals().clear() 

但天知道那是什麼用途。

仍然有很多方法可以解決沒有全局()

object = 0 .__class__.__mro__[1] 
+0

謝謝!你能否就最後一行提供一些解釋? – 2014-09-22 11:02:11

3

不能刪除全球範圍內,但你可以明確它:

x = 1 

globals().clear() 

x 
#>>> Traceback (most recent call last): 
#>>> File "", line 21, in <module> 
#>>> NameError: name 'x' is not defined 

一個警告,雖然:無論你正在試圖做的是說錯話,你應該做的事情其他。

+0

+1爲警告 – 2014-09-22 11:03:39