Повторное импортирование сглаженных/затененных встроенных методов python

Если вы запустили

from numpy import *

тогда встроенные all и несколько других функций затеняются numpy функциями с одинаковыми именами.

Наиболее распространенный случай, когда это происходит (без того, чтобы люди полностью его понимали), при запуске ipython с ipython --pylab (но вы не должны этого делать, используйте --matplotlib, который не импортирует ничего в ваш пространство имен, но вместо этого устанавливает магию, связанную с gui).

Как только это было сделано, есть ли способ вызвать встроенные функции?

Это стоит сделать, потому что встроенный all может иметь дело с генераторами, где не может быть версия numpy.

Ответ 1

вы можете просто сделать

all = __builtins__.all

Утверждение from numpy import * в основном делает две отдельные вещи

  • импортирует модуль numpy
  • копирует все экспортированные имена из модуля в текущий модуль

путем повторного назначения исходного значения из __builtins__ вы можете восстановить ситуацию для необходимых функций.

Ответ 2

Вы можете исправить их массово, повторно импортировав встроенные функции:

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>