← Все вопросы

Про импорт модулей

Задан 2 месяца назад25 просмотров1 ответ
0

Почему в одном проекте пишут import math, а потом используют math.sqrt(), а в другом пишут from math import sqrt и используют просто sqrt()? В чем разница ,какой способ лучше и зачем импортируют модули?

1 ответ

1

Работают оба варианта одинаково, разница — какие имена появляются в вашем файле.

import math кладёт в программу одно имя — сам модуль. Дальше всё через точку: math.sqrt(x), math.pi. Читая код, сразу видно, откуда взялась функция.

from math import sqrt достаёт из модуля конкретное имя. Писать короче, но есть два минуса: по голому sqrt(x) в большом файле не видно, чей это sqrt, и легко словить конфликт — если у вас уже есть своя функция с таким именем, одна перекроет другую.

Экономии от второй формы нет: модуль в обоих случаях загружается целиком. И только один раз — повторные импорты Python берёт из кэша.

Мой ориентир: маленький скрипт и пара функций — можно from; всё остальное — import math. А вот from math import * не пишите совсем: в файл высыпаются десятки имён, уследить за ними невозможно.

Зачем импорты вообще: стандартная библиотека и сторонние пакеты не загружаются сами — иначе каждая программа таскала бы в памяти тысячи ненужных функций.

Ваш ответ

, чтобы ответить на вопрос.