Модуль math — от каталога к инструментам
Что такое модуль, зачем нужен import и что означает точка в math.sqrt() — прежде чем нырять в конкретные функции, разберёмся, как вообще устроен этот ящик с инструментами.
Python уже кое-что умеет считать без всякой подготовки:
print(abs(-7)) # 7
print(round(4.5)) # 4
print(pow(2, 10)) # 1024
Но настоящей математики в мире куда больше, чем четыре встроенные функции: корни, синусы, логарифмы, работа с углами и расстояниями. Если бы все такие инструменты были встроены прямо в язык — Python превратился бы в загромождённый список из сотен имён, и запомнить, что вообще доступно, стало бы невозможно.
Модуль — это отдельный, подписанный ящик с инструментами
Вместо этого стандартная библиотека Python организует связанные инструменты в
модули — отдельные «ящики», которые лежат рядом, но не смешиваются с языком
напрямую и друг с другом. Один из таких ящиков называется math —
в нём собраны математические инструменты: корни, тригонометрия, логарифмы и многое другое.
import math — открываем ящик
Чтобы воспользоваться инструментами из ящика math, его нужно
сначала явно открыть — командой import:
import math
# теперь всё содержимое ящика math доступно в этой программе
print(math.sqrt(2))
import math примерно означает: «сделай содержимое модуля math доступным в этой программе». Без неё math.sqrt(25) вызовет NameError — Python ещё не знает, где искать math.Что означает точка
Разберём запись math.sqrt(25) по частям:
Точка здесь значит «возьми sqrt из модуля
math» — так Python отличает, например, math.sqrt
от какой-нибудь другой функции с похожим именем из совсем другого модуля: у каждого
инструмента есть свой явный адрес.
А что если аргумент не нужен: math.pi
math.pi — не функция, а готовое значение
(константа): число π уже вычислено и лежит внутри модуля под именем pi.
Поэтому у него нет круглых скобок — скобки означают «вызови функцию», а
pi вызывать не нужно, его нужно просто прочитать:
import math
print(math.pi) # 3.141592653589793 — значение, не вызов
print(math.sqrt(25)) # 5.0 — а это вызов функции, поэтому есть скобки
Первые эксперименты
Несколько маленьких примеров — код и его результат:
import math
print(math.sqrt(25))
РЕЗУЛЬТАТ: 5.0 — квадратный корень из 25.
import math
print(math.pi)
РЕЗУЛЬТАТ: 3.141592653589793 — число π с точностью float.
import math
print(math.gcd(18, 24))
РЕЗУЛЬТАТ: 6 — наибольший общий делитель 18 и 24.
import math
print(math.hypot(3, 4))
РЕЗУЛЬТАТ: 5.0 — длина гипотенузы прямоугольного треугольника со сторонами 3 и 4.
Встроенное vs math — не путаем
Ещё раз проведём чёткую границу — какие инструменты встроены в язык напрямую, а какие нужно явно импортировать, и откуда именно:
| Инструмент | Откуда | Нужен import? |
|---|---|---|
abs(), round(), pow() | встроены в язык | нет |
math.sqrt(), math.floor(), math.sin(), math.log() | модуль math | import math |
Decimal | модуль decimal (глава 4) | from decimal import Decimal |
Fraction | модуль fractions (глава 4) | from fractions import Fraction |
Decimal и Fraction из главы 4 — инструменты для точных чисел, но живут в СВОИХ собственных модулях (decimal и fractions), отдельно от math. Три разных ящика — три разных импорта.Полная карта: что умеет math
Теперь, когда понятно, что такое модуль и зачем нужна точка, можно спокойно посмотреть на
карту того, что math предлагает — следующие разделы главы разберут
каждую карточку подробно, с реальными задачами:
Как искать то, чего нет на карте
У math около полусотни функций — эта карта показывает только
самые полезные для начала. Никто не держит в голове весь список, и это нормально:
профессиональный навык — не «знать всё наизусть», а знать примерно, что
существует, и уметь быстро найти точную деталь.
math, — на странице официальной документации Python 3.14: docs.python.org/3.14/library/math (Standard Library → math). Опытные разработчики заглядывают туда постоянно — это не признак незнания, а нормальная часть работы.