`del`在一个包上有一种记忆的作用。
`del`在一个包上有一种记忆的作用。
del
似乎有一些让我困惑的记忆。看下面的例子:
In [1]: import math In [2]: math.cos(0) Out[2]: 1.0 In [3]: del math.cos In [4]: math.cos(0) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last)in () ----> 1 math.cos(0) AttributeError: module 'math' has no attribute 'cos'
好吧。让我们看看如果我们删除整个math包会发生什么:
In [5]: del math In [6]: math.cos(0) --------------------------------------------------------------------------- NameError Traceback (most recent call last)in () ----> 1 math.cos(0) NameError: name 'math' is not defined
所以现在math本身消失了,这是预料中的。
现在让我们再次导入math:
In [7]: import math In [8]: math.cos(0) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last)in () ----> 1 math.cos(0) AttributeError: module 'math' has no attribute 'cos'
所以无论如何,交互式Python在我们删除整个math包并重新导入它之后仍然记得math.cos被删除的事实。
Python把这个知识保存在哪里?我们可以访问它吗?我们可以改变它吗?