Магические числа в Python: определение, опасность и лучшие практики

Взгляните, как в Python скрыты магические числа, почему они портят код и какие простые трюки помогут превратить их в чистые константы.

В программировании под магическими числами обычно понимают «заправленные» константы,
которые появляются в коде без пояснений и, как правило, ухудшают читаемость программы.
В языке Python такие числа встречаются часто – от коэффициентов расчёта цены до
значений таймеров, использующихся в магических словах кода.

Что такое магические числа в Питоне?

Магическое число – это литерал (целое, вещественное, строковое), вставленный в программу без
комментариев или именованного константного идентификатора. Пример:

price = net_price * 1.20 # 1.20 – магическое число

То, что мы видим – простое умножение, но смысл числа «1.20» неизвестен без контекста
(«20 % надбавка», «налог», «скидка»?). Поэтому в профессиональном коде такие числа
заменяют на читаемые константы.

Почему магия магических чисел опасна?

  1. Снижение читаемости. Другие разработчики (и вы сами через месяц) не поймут,
    зачем использовано конкретное значение.
  2. Трудности в поддержке. При изменении бизнес‑логики нужно искать все места,
    где встречается число, и менять их вручную – повышается риск ошибок.
  3. Отсутствие гарантии результата. Неправильно
    подобранные константы могут привести к неверным расчётам и «не берет денег», но
    и к финансовым потерям.

Лучшие практики: как избавиться от магических чисел

  • Назначайте константы. Выделяйте их в отдельный модуль constants.py и дайте осмысленные имена:
    VAT_RATE = 0.20
    TOTAL_PRICE = net_price * (1 + VAT_RATE)
  • Используйте перечисления (Enum). Для наборов связанных чисел (уровни доступа,
    типы статусов и т.п.) удобно применять Enum.
  • Документируйте. Комментарии и docstring должны объяснять, почему именно
    выбранное значение присутствует в коде.
  • Тестируйте. Автоматические тесты гарантируют, что изменение константы не сломает
    бизнес‑логику – это ваша гарантия результата.

Связанные «магические» понятия: руны, аффирмации и мантры в программировании

В эзотерической литературе часто встречаются такие термины, как руны,
аффирмации и мантры. В мире кода их можно сравнить с
правильными магическими словами (ключевыми фразами), которые «помогают»:

  • «def – мантра создания функции»;
  • «class – руна объектно‑ориентированного подхода»;
  • «assert – аффирмация корректности состояния».

Эти «заклинания» работают бесплатно, не берут деньги и доступны без предоплаты – их
можно использовать в любой IDE онлайн или офлайн.

Как получать помощь и задавать вопросы по магическим числам

Если вам нужен личный прием эксперта, который помогает
разобрать код, устранить «магические» места и настроить консультацию –
обращайтесь к проверенным специалистам. Ниже представлен список контактов, где можно
задать вопрос, написать или позвонить.
Все услуги бесплатно и без регистрации, поддержка работает круглосуточно.

Контакты для обращения

  • Телефон: +7 (495) -23‑45‑67 – быстрый звонок в любое время
    (круглосуточно).
  • WhatsApp: +7 (495) -23‑45‑67 – сообщение с
    описанием проблемы, не берет денег.
  • Telegram: @python_magic_help – канал и чат,
    где обсуждаются магические числа, руны,
    мантры кода.
  • Э‑почта: support@py-magic.ru – отправьте запрос
    с прикреплённым фрагментом кода, получите гарантию результата
    в течение 24 ч.
  • Сайт: https://py‑magic.ru – бесплатные
    гайды, онлайн‑курсы и форма задать вопрос.
  • Форма обратной связи: https://py‑magic.ru/contact
    – запрос без предоплаты, ответы в течение часа.
  • Live‑чат (Viber, Discord): Discord‑сервер –
    без регистрации, сразу же получаете помощь от сообщества.

Часто задаваемые вопросы (FAQ)

Зачем вообще нужны магические числа?

Иногда это проще и быстрее – например, в дипломных проектах, где требуется
прототипировать быстро. Но в продакшн‑коде их следует заменять на константы.

Как быстро найти все магические числа в проекте?

Используйте grep или плагины IDE:

grep -R -E '[0-9]+(.[0-9]+)?' ./src/ | grep -v 'def|class'

Или запустите статический анализатор pylint с правилом magic-number.

Можно ли полностью избавиться от магических чисел?

Практически – да. Всё, что имеет смысл только в контексте
домена, следует вынести в конфигурационные файлы или в константы.

Подведём итог

Магические числа в Питоне – это магия плохого кода. Очищая их,
вы получаете чистый, понятный и легко поддерживаемый проект. При этом, если вам нужен
профессиональный совет, мантры и аффирмации
в виде компетентных рекомендаций, наши контакты для обращения
всегда открыты. Мы предоставляем бесплатные услуги, не берём деньги и гарантируем
результат – ваш код станет гораздо «мягче» и надёжнее.


Статья написана в свободном доступе и может быть использована
для личного и коммерческого обучения без ограничений.