import module
импортируется весь модуль. Доступ к объектам внутри модуля осуществляется через module.object
.
from module import ...
импортируются только указанные объекты из модуля. К этим объектам можно обращаться напрямую, без префикса module.
. Импорт всего содержимого модуля можно сделать с помощью from module import *
, но это не рекомендуется из-за возможных конфликтов имен.
Разница между import module
и from module import ...
заключается в том, как вы получаете доступ к элементам (функциям, классам, переменным) внутри модуля:
import module
:
module.function_name()
или module.ClassName
.import math
print(math.sqrt(16)) # Доступ к функции sqrt через math.sqrt
from module import ...
:
function_name()
или ClassName
.from module import *
для импорта всех элементов модуля, но это крайне не рекомендуется, так как увеличивает вероятность конфликтов имен и ухудшает читаемость кода.from math import sqrt, pi
print(sqrt(16)) # Доступ к функции sqrt напрямую
print(pi) # Доступ к константе pi напрямую
from datetime import datetime as dt #Импорт datetime с переименованием
now = dt.now()
print(now)
Краткое сравнение:
import module
: Безопаснее (меньше конфликтов), более явно, но требует больше набора текста.from module import ...
: Меньше набора текста, но более рискованно (больше конфликтов), менее явно.В целом, выбор между этими двумя способами зависит от конкретной ситуации и стиля кодирования. Важно учитывать потенциальные конфликты имен и читаемость кода.