Импорт модулей стандартной библиотеки
Уроки курсаИмпорт модулей стандартной библиотеки
Пространство имён и точечная нотация
После import math в вашей программе появляется имя math. Но что именно за ним стоит?
Представьте, что модуль — это ящик с инструментами. Внутри ящика лежат sqrt, pi, floor, ceil и ещё десятки вещей. Каждый инструмент подписан своим именем. Это и есть пространство имён модуля: отдельная область, в которой живут все имена, определённые в этом файле.
Когда вы пишете math.sqrt, вы буквально говорите: «возьми ящик math, открой его и достань оттуда sqrt». Точка — это оператор доступа к содержимому конкретного пространства имён.
Почему это важно? Представьте, что в вашем коде уже есть переменная с именем pi:
import math
pi = 3.14 # своя грубая константа
print(pi) # 3.14 — ваша переменная
print(math.pi) # 3.141592653589793 — константа из модуля
Оба имени существуют одновременно и не мешают друг другу. pi живёт в вашем коде, math.pi — в пространстве имён модуля. Точечная нотация явно указывает, из какого «ящика» брать имя.
Если бы Python просто вываливал все имена модуля прямо в ваш код при import math, такой манёвр был бы невозможен: одно из двух pi неизбежно перезаписало бы другое. Именно поэтому import math не делает sqrt и pi доступными напрямую — они остаются внутри своего пространства имён и требуют префикса.
Проверить, что вообще лежит в модуле, можно прямо в интерпретаторе:
import math
print(dir(math))
dir() вернёт список всех имён, определённых в math. Это удобнее, чем каждый раз открывать документацию, когда хочется вспомнить, есть ли там нужная функция.
