Для протокола отрывок из учебного пособия по Python.
Клиент может выполнить оператор import или from. Если модуль не загружен, эти операторы будут искать, компилировать и выполнять программу файла модуля. Главное отличие в том, что импорт считывает весь модуль, поэтому его нужно определить, прежде чем можно будет прочитать имя переменной; от получит (или копирует) имена переменных, специфичных для модуля.
Импорт заставляет имя переменной отсылаться ко всему объекту модуля, поэтому свойства модуля должны быть получены по именю модуля (например, module1.printer). и From будет копировать имя переменной в другую область действия, чтобы она могла использовать копированное имя переменной непосредственно в скрипте без прохождения через модуль (например, принтер).
Оператор из может нарушать пространства имён. Если вы импортируете переменные с помощью From, и эти переменные дублируются с существующими переменными в области действия, переменные тихо перезаписываются. Это не является проблемой при использовании операторов импорта, поскольку его содержимое должно быть получено по именю модуля. Однако при использовании From на практике это не большая проблема, если вы понимаете и предвидите это, особенно если чётко указаны имена импортных переменных (например, из импорта модулей x, y, z).
С другой стороны, при использовании с вызовом reload оператор from возникает серьёзная проблема, поскольку имя импортированной переменной может отсылать к предыдущей версии объекта. Кроме того, форма из импорта модуля * действительно может нарушить пространство имён и затруднить понимание имён переменных, особенно при импорте более одного файла.
Более прагматичное предположение — простые модули обычно используют импорт, а не от. Большинство операторов из используются для явного перечисления нужных переменных и ограничены использованием формы из * только один раз на файл. Таким образом, любое неопределённое имя переменной можно считать существующим в модуле, на который ссылается из *. Вам действительно приходится использовать импорт, когда нужно использовать одну и ту же переменную с именем переменной, определённую в двух разных модулях, и в этом случае вы не можете использовать From.
Я много говорил, не знаю, что сказать, давайте поговорим об этом вкратце.
- импорт Модуль # Ввести модули
- из Импорт модуля Другое # Ввести классы, функции или переменные в модуль
- из импорта модуля * # Ввести всех «публичных» участников модуля
Простыми словами:
Импортировать класс A #把整个一班的学生引入了进来
от группы легионеров Сяо Ван #只把一般的小王引入了进来
Например:
Временной пакет служит примером, и следующие два метода записи одинаковы, а именно:
|