2014-02-10 81 views
-1

在IDLE中我定义了变量,参见它们。 my1=10; my2=20; my3=300; my4=500;等等,其中很多都是。现在我想写模块mmm,它可以删除所有这些变量。我可以做吗?如何编写模块mmm可以删除这些myNNN名称,所以IDLE会忘记它们。Python:从子模块删除主变量

+0

从你的问题,我明白's'不在模块'mmm'内。那么,如何从's'中删除,但仍然可以使用'del'从本地()和全局()名称空间中删除。 –

+2

你的问题根本不清楚。请重新说明。很难理解你真正想知道的。 – mguijarr

+0

重述主题。 – Prog1020

回答

0

在Python中,“global”的意思是“模块级”,而不是“进程级”。 IOW,你的“mmm”模块将而不是奇迹般地获得对“根”模块中定义的名称的访问。

0

你可以使用“删除”删除任何变量,这里有一个例子:

import mmm 

del mmm.s 

此代码不能在一个模件为例进行测试,请测试,并重播。

0

我假设解释,你想从你的模块“嗯”

我已经一个名为mmm模块删除里面的一个变量,我定义s = 'aa'模块内。

>>> s = 'aa' 
>>> import mmm 
>>> mmm.s # variable from module name space 
'aa' 
>>> s  # this is the variable in local name space. 
'aa' 
>>> 

让我们删除该变量s内部模块mmm

>>> del mmm.s 
>>> mmm.s 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 's' 
>>> 

但你仍然可以访问变量定义内部本地命名空间:

>>> s 
'aa' 
>>> 

因为它仍然在当地人命名空间中存在:

>>> locals()['s'] 
'aa' 
>>> 

现在,让我们做重新导入模块mmm

>>> reload(mmm) 
<module 'mmm' from 'mmm.pyc'> 
>>> mmm.s 
'aa' 
>>> 

你后重新导入模块mmm,你mmm.s被恢复。