Alterna · учебный материал

Импорты и математика

Импорт в Python, math, decimal, fractions, statistics и комбинаторика: когда стандартная библиотека делает решение яснее.

Что в этом материале

Содержание и основные понятия

import math
оставляет на виду происхождение функции:
math.gcd(a, b)
читается точнее, чем безымянный вызов.
стандартная библиотека
10-11 класс
ЕГЭ: алгоритмическая опора
01
Три формы импорта
Запись
Когда уместна
Риск
import math
Обычный выбор: источник функции виден у каждого вызова.
Почти нет.
from math import gcd
Одна-две очень частые функции в коротком модуле.
Становится менее видно происхождение имени.
import math as m
Только если сокращение принято в проекте и очевидно читателю.
Неудачный псевдоним маскирует смысл.
Важно
from math import *
не используй: имена могут столкнуться со встроенными функциями или переменными программы.
02
Инструменты для чисел
math
gcd
,
lcm
,
isqrt
,
comb
,
perm
,
ceil
и
floor
.
decimal
Десятичные деньги и фиксированная точность. Не лечит неверную модель, но избегает двоичной погрешности
float
.
fractions
Fraction
хранит рациональное число точно: удобно для объяснений и символьных расчетов.
statistics
Среднее, медиана, мода. Для простого среднего обычно достаточно
sum(values) / len(values)
.
random
Генерирует тестовые данные и моделирует случайность. Не подходит для паролей и секретов.
operator
itemgetter
и
attrgetter
дают читаемые ключи сортировки, но обычная
lambda
часто яснее.
03
Комбинаторика без самодельных факториалов
Число способов выбрать
k
объектов из
n
без порядка равно
math.comb(n, k)
. Перестановки с порядком дает
math.perm(n, k)
. Функции возвращают целое число и корректно обрабатывают большие значения.
import
math
n, k = 6, 2
print(math.comb(n, k))
print(math.perm(n, k))
Для шести объектов и выбора двух получаем 15 сочетаний и 30 размещений: во втором случае порядок выбранной пары важен.
04
Быстрая проверка
Какой вызов возвращает целую часть квадратного корня и не теряет точность на больших целых?

Структурная карта учебников