Подтвердить что ты не робот

В чем разница между import modx и modx import *?

Если бы я должен был импортировать какой-то модуль с именем modx, как бы это отличалось от высказывания

from modx import *

Не все ли содержимое будет импортировано из каждого в любом случае? Это в python, чтобы уточнить.

4b9b3361

Ответ 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 * обычно не одобряется, поскольку:

  • Он помещает вещи в глобальное пространство имен, не давая вам тонкого контроля
  • Это может вызвать конфликты из-за того, что все находится в глобальном пространстве имен
  • Непонятно, что на самом деле определено в текущем файле, поскольку список определяемых им значений может варьироваться в зависимости от того, что импортировано.

Ответ 3

Общий вопрос с множеством вопросов, чтобы ответить... вот один: http://effbot.org/zone/import-confusion.htm

По существу, чтобы ответить на ваш конкретный вопрос во второй форме (from modx import *), вы получаете только публичные элементы в modx