Повторное импортирование сглаженных/затененных встроенных методов 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>