Просто чтобы пояснить, что говорили другие люди, numpy - это особенно плохой модуль для использования import *
с.
pylab
предназначен для интерактивного использования, и это хорошотам.Никто не хочет набирать pylab.zeros
снова и снова в оболочке, когда они могут просто набрать zeros
.Однако, как только вы начинаете писать код, все меняется.Вы набираете его один раз , и он может остаться навсегда, и другие люди (например, вы год спустя), вероятно, будут пытаться выяснить, какого черта вы делали.
В дополнение к тому, что @unutbu уже говорил о переопределении встроенных в Python sum
, float
int
и т. Д., И к тому, что все говорили о незнании, откуда взялась функция, numpy
и pylab
очень большие пространства имен.
numpy
имеет 566 функций, переменных, классов и т. д. в своем пространстве имен.Это много!pylab
имеет 930 !(А с pylab они приходят из нескольких разных модулей.)
Конечно, достаточно легко угадать, откуда zeros
или ones
или array
, но как насчет source
илиDataSource
или lib.utils
?(все они будут в вашем локальном пространстве имен, если вы сделаете from numpy import *
Если у вас есть проект немного большего размера, есть большая вероятность, что вы будете иметь локальную переменную или переменную в другом файлеэто имя похоже на что-то в большом модуле, таком как numpy
. Внезапно, вы начинаете беспокоиться о том, что именно вы называете!
В качестве другого примера, как бы вы различалиФункция 1040 * fft
и numpy
fft
модуль ?
В зависимости от того, выполняете ли вы
from numpy import *
from pylab import *
или:
from pylab import *
from numpy import *
fft
- это полностью другое с полностью другим поведением! (Т.е. попытка вызвать fft
во втором случае вызовет ошибку.)
В общем, вы всегда должны избегать from module import *
, но это особенно плохая идея в случае numpy
, scipy
и др., Потому что они такие большие пространства имен.
Конечно, все это было сказано, если вы просто суетитесь в раковине, пытаясьo быстро получить график некоторых данных, прежде чем приступить к действию с ним, а затем использовать pylab
.Вот для чего это.Только не пишите что-то, что кто-то может попытаться прочитать позже в будущем!
</rant>