math
gcd, lcm, isqrt, comb, perm, ceil и floor.
Импорт сообщает читателю, откуда взята операция. Хорошее имя модуля делает формулу прозрачной.
import math оставляет на виду происхождение функции: math.gcd(a, b) читается точнее, чем безымянный вызов.
| Запись | Когда уместна | Риск |
|---|---|---|
import math | Обычный выбор: источник функции виден у каждого вызова. | Почти нет. |
from math import gcd | Одна-две очень частые функции в коротком модуле. | Становится менее видно происхождение имени. |
import math as m | Только если сокращение принято в проекте и очевидно читателю. | Неудачный псевдоним маскирует смысл. |
from math import * не используй: имена могут столкнуться со встроенными функциями или переменными программы.
gcd, lcm, isqrt, comb, perm, ceil и floor.
Десятичные деньги и фиксированная точность. Не лечит неверную модель, но избегает двоичной погрешности float.
Fraction хранит рациональное число точно: удобно для объяснений и символьных расчетов.
Среднее, медиана, мода. Для простого среднего обычно достаточно sum(values) / len(values).
Генерирует тестовые данные и моделирует случайность. Не подходит для паролей и секретов.
itemgetter и attrgetter дают читаемые ключи сортировки, но обычная lambda часто яснее.
Число способов выбрать k объектов из n без порядка равно math.comb(n, k). Перестановки с порядком дает math.perm(n, k). Функции возвращают целое число и корректно обрабатывают большие значения.
import math 04Быстрая проверка
Какой вызов возвращает целую часть квадратного корня и не теряет точность на больших целых?