Короткий ответ
Оператор import подключает модуль целиком, и обращения к его объектам идут через имя с точкой, например math.sqrt(16). Оператор from...import переносит выбранные имена прямо в текущее пространство имён, после чего они используются без имени модуля. Синтаксис: from имя_модуля import имя1, имя2.
Как это работает подробнее
Выбор между двумя операторами — вопрос читаемости и контроля пространства имён.
- Импорт целиком.
importделает происхождение имён очевидным, но требует длинных квалифицированных обращений. - Импорт имён.
from...importсокращает код, однако при неудачных именах возможны коллизии. - Импорт звёздочкой.
from module import *заносит все имена разом, загрязняет пространство имён и может переопределить существующие имена. - Псевдонимы. Длинные или конфликтующие имена переименовывают через
as, напримерimport numpy as np. - Особенность импорта. При
import a.bимя b должно быть модулем или пакетом, тогда какfrom a import bпозволяет импортировать и произвольное имя, объявленное в пакете.
Пример кода
Способы импорта
import math # импорт модуля целиком
print(math.sqrt(16)) # 4.0
from math import sqrt, pi # импорт отдельных имён
print(sqrt(16), pi) # 4.0 3.141592653589793
import numpy as np # импорт с псевдонимомЧто использовать на практике
- Читаемость. Используй
import, когда важно показывать происхождение имени.