Если бы я должен был импортировать какой-то модуль с именем modx, как бы это отличалось от высказывания
from modx import *
Не все ли содержимое будет импортировано из каждого в любом случае? Это в python, чтобы уточнить.
Ответ 1
Если вы import somemodule, содержащиеся глобальные значения будут доступны через somemodule.someglobal. Если вы from somemodule import * ВСЕ его глобальные (или те, что указаны в __all__, если он существует) будут сделаны глобальными, т.е. Вы можете получить к ним доступ с помощью someglobal без имени модуля перед ним.
Использование from module import * не рекомендуется, поскольку оно загромождает глобальную область, и если вы импортируете материал из нескольких модулей, вы, вероятно, столкнетесь с конфликтами и перезапишете существующие классы/функции.
Ответ 2
Если a определяет a.b и a.c...
import a
a.b()
a.c()
против.
from a import b
b()
c() # fails because c isn't imported
против.
from a import *
b()
c()
Обратите внимание, что from foo import * обычно не одобряется, поскольку:
Он помещает вещи в глобальное пространство имен, не давая вам тонкого контроля
Это может вызвать конфликты из-за того, что все находится в глобальном пространстве имен
Непонятно, что на самом деле определено в текущем файле, поскольку список определяемых им значений может варьироваться в зависимости от того, что импортировано.