← Все вопросы

Чем import module отличается от from module import name?

Задан 14 месяцев назад1.1к просмотров3 ответа
18

Есть import math и from math import sqrt. В чём практическая разница и что лучше использовать?

3 ответа

27
✓ Принятый ответ — помог автору

Разница в том, как ты потом обращаешься к именам:

import math
math.sqrt(9)        # нужно писать через префикс math.

from math import sqrt
sqrt(9)             # имя доступно напрямую

import math тащит весь модуль и ты зовёшь функции через math.. from math import sqrt кладёт в твоё пространство имён только sqrt. Второй вариант короче, но есть риск конфликта имён: если у тебя своя переменная sqrt, она перетрёт импортированную. Поэтому для часто используемых вещей from ... import ок, а в больших проектах import module (или import numpy as np) считается безопаснее и читаемее — сразу видно, откуда функция.

ELL Александрович про конфликт имён — прям моя боль была, спасибо · 13 месяцев назад
10

import math → пишешь math.sqrt. from math import sqrt → пишешь просто sqrt. Функционально один и тот же модуль грузится.

7

И никогда не делай from module import * в нормальном коде — засоряешь пространство имён и непонятно, что откуда взялось.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект