Python:从子模块中删除主变量

时间:2014-02-10 15:36:16

标签: python python-3.x

在IDLE中,我定义变量,其中包括几个变量。 my1=10; my2=20; my3=300; my4=500;等,其中很多都是。现在我想编写可以删除所有这些变量的模块mmm。我可以做吗?如何编写可以删除这些mmm名称的模块myNNN,以便IDLE忘记它们。

3 个答案:

答案 0 :(得分:0)

您可以使用'del'删除任何变量,这是一个示例:

import mmm

del mmm.s

此代码未在模块示例中进行测试,请测试并重播。

答案 1 :(得分:0)

我假设你试图从模块中删除一个变量'mmm'

我有一个名为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命名空间中:

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

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

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

重新导入模块mmm后,您的mmm.s将重新获得。

答案 2 :(得分:0)

在Python中,“全局”实际上意味着“模块级”,而不是“进程级”。 IOW,你的“mmm”模块将神奇地访问“root”模块中定义的名称。