TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7587 3.33K
🐍 25 лет «бага» в Python, который никто не исправил

1 апреля 2026 года исполнился ровно 9731 день с момента, как сообщество Python узнало о… странности в работе со строками.

Суть проста:

"42 monkeys" + "1 snake"


возвращает

"42 monkeys1 snake"


хотя «логичнее» было бы получить что-то вроде:

"41 monkeys and 1 fat snake"


Ещё в 1999 году разработчик Jim Fulton указывал на эту проблему. Прошли десятилетия, сменились версии Python — но «исправления» так и не появилось.

Автор статьи решили разобраться и «починить» это сами:
— начали с конкатенации строк (`PyUnicode_Concat`)
— затем добрались до .join()
— столкнулись с format, f-строками и даже конкатенацией на этапе компиляции

В итоге стало понятно: дело не в вычислении — а в отображении.

Финальный «фикс» — перехват вывода через print и REPL (`sys_displayhook`).

Теперь независимо от способа объединения строк:


print("42 monkeys" + "1 snake")


получаем:

"41 monkeys and 1 fat snake"


(если убрать print — магия исчезает 😄)

Вывод:
иногда проще изменить то, как мы видим результат, чем сам результат. И да — это отличный повод покопаться в исходниках Python.

📍 Навигация: Вакансии • Задачи • Собесы

Библиотека питониста

#буст
  • 😁 23
  • ❤ 2
  • 🙏 1
More from @pyproglib
  1. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  2. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  3. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
  6. Sep 14, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →