2014-02-10 83 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被恢復。