重新导入别名/阴影python内置方法

时间:2013-09-12 21:10:21

标签: python numpy

如果已经运行

from numpy import *

然后内置的all和其他几个函数被具有相同名称的numpy函数遮蔽。

发生这种情况的最常见情况(没有人完全意识到)是在ipython开始ipython --pylab时(但你不应该这样做,请使用--matplotlib,这不是不要将任何东西导入你的名字空间,而是设置与gui相关的魔法,而不是。)

完成此操作后,无论如何都要调用内置函数吗?

这是值得做的,因为内置all可以处理生成器,而numpy版本则不能。

2 个答案:

答案 0 :(得分:11)

你可以做到

all = __builtins__.all

陈述from numpy import *基本上做了两件事

  1. 导入模块numpy
  2. 将所有导出的名称从模块复制到当前模块
  3. 通过从__builtins__重新分配原始值,您可以恢复所需功能的情况。

答案 1 :(得分:3)

您可以通过重新导入内置来纠正这些问题:

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>