В любом случае, вот как эти операторы и функции работают:
import X
импортирует модуль X и создаетссылка на этот модуль в текущем пространстве имен.Или, другими словами, после выполнения этого оператора вы можете использовать X.name
для ссылки на вещи, определенные в модуле X.
from X import *
импортирует модуль X и создает ссылки в текущем пространстве имен длявсе открытые объекты, определенные этим модулем (то есть все, что не имеет имени, начинающегося с «_»).Другими словами, после выполнения этого оператора вы можете просто использовать простое имя для ссылки на вещи, определенные в модуле X. Но сам X не определен, поэтому X.name
не работает.И если имя уже было определено, оно заменяется новой версией.И если имя в X будет изменено, чтобы указывать на какой-либо другой объект, ваш модуль не заметит.
from X import a, b, c
импортирует модуль X и создает ссылки в текущем пространстве имен на заданные объекты.Или, другими словами, теперь вы можете использовать a
и b
и c
в вашей программе.
Наконец, X = __import__(‘X’)
работает как import X
с той разницей, что вы 1) передать имя модуля в виде строки и 2) явно присвоить его переменной в текущем пространстве имен.
И, кстати, это последний метод, который вас интересует.