← Вернуться к карте тем
Alterna · глава 42 · страница 42.1

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

Импорт сообщает читателю, откуда взята операция. Хорошее имя модуля делает формулу прозрачной.

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

Быстрая проверка

Какой вызов возвращает целую часть квадратного корня и не теряет точность на больших целых?