2014-09-22 204 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