如果一个人跑了
from numpy import *
然后是内置的 all
,和其他几个功能,被阴影 numpy
具有相同名称的函数。
发生这种情况的最常见情况(没有人完全意识到)是在启动时 ipython
同 ipython --pylab
(但你不应该这样做,使用 --matplotlib
,它不会将任何内容导入您的名称空间,而是设置与gui相关的魔法,而不是)。
一旦完成,无论如何都要调用内置函数?
这是值得做的,因为内置 all
可以处理发电机,在哪里 numpy
版本不能。
你可以这样做
all = __builtins__.all
该声明 from numpy import *
基本上做两件事
- 导入模块
numpy
- 将所有导出的名称从模块复制到当前模块
通过重新分配原始值 __builtins__
您可以恢复所需功能的情况。
您可以通过重新导入内置函数来纠正这些问题:
In [1]: all
Out[1]: <function all>
In [2]: from numpy import *
In [3]: all
Out[3]: <function numpy.core.fromnumeric.all>
In [4]: from __builtin__ import *
In [5]: all
Out[5]: <function all>