13 AI Prompts That Turn Legacy Python 2 Chaos Into Clean Python 3 Code

Почему миграция с Python 2 на Python 3 всё ещё актуальна в 2026 году

Хотя официальная поддержка Python 2 прекратилась 1 января 2020 года, многие компании до сих пор эксплуатируют legacy-системы на этом языке. По данным опроса Stack Overflow Developer Survey 2023, Python 2 всё ещё использовали около 1% респондентов, а в корпоративном секторе эта доля выше из-за инерции и страха сломать работающие сервисы. Переписывание вручную занимает месяцы, но с правильными промтами для AI-ассистентов (например, ChatGPT, Claude, ASI Biont) этот процесс можно ускорить в разы.

В этой подборке — 13 конкретных промтов, которые помогают автоматизировать анализ несовместимостей, замену устаревших конструкций, работу с юникодом, словарями, библиотеками и тестами. Каждый промт сопровождается примером использования и пояснением, для какой задачи он подходит. Все примеры кода проверены и соответствуют синтаксису Python 3.12.

Как пользоваться подборкой

Промты составлены так, чтобы их можно было копировать в любой AI-инструмент, поддерживающий работу с кодом. Для максимальной эффективности комбинируйте их с автоматическими инструментами: 2to3, futurize, modernize и pyupgrade. AI-ассистент не заменяет их, но берёт на себя сложные случаи, где автоматика бессильна.

1. Анализ несовместимостей в кодовой базе

Задача: быстро получить отчёт о местах, несовместимых с Python 3, без запуска полного набора тестов.

Промт:

Проанализируй следующий фрагмент кода на Python 2 и выяви все конструкции, несовместимые с Python 3. Составь таблицу: строка, проблема, рекомендуемое исправление. Учти print-выражения, деление целых чисел, синтаксис исключений, работу со строками и байтами.

Код:
{{code}}

Пример использования:
Вы передаёте AI модуль на 500 строк. Он возвращает таблицу с 12 проблемами, включая print "hello", except Exception, e и dict.has_key(). Это экономит часы ручного просмотра.

2. Замена print-выражений на функцию print()

Задача: массовая замена print без скобок на print() с сохранением поведения.

Промт:

Замени все print-выражения в коде на функцию print() в Python 3. Учти случаи с запятыми в конце (подавление перевода строки) и вывод в файл. Верни исправленный код и список изменений.

Код:
{{code}}

Пример:

# Python 2
print "Result:", value
print >>sys.stderr, "Error"

AI преобразует в:

# Python 3
print("Result:", value)
print("Error", file=sys.stderr)

3. Переписывание обработки исключений

Задача: исправить синтаксис except Exception, e на except Exception as e.

Промт:

Преобразуй все блоки except в соответствии с синтаксисом Python 3. Замени 'except Exception, e' на 'except Exception as e'. Проверь, чтобы не осталось устаревших конструкций.

Код:
{{code}}

Пример: AI находит и исправляет 8 блоков в файле.

4. Работа с юникодом и строками

Задача: корректно перевести строковые литералы и операции с учётом различий str/unicode.

Промт:

Проанализируй код на предмет проблем с юникодом при миграции на Python 3. Предложи замены: где нужно использовать префикс b для байтов, где — обычные строки. Учти функции encode/decode.

Код:
{{code}}

Пример: В Python 2 type('') — это str (байты), в Python 3 — str (юникод). AI подскажет, где добавить .encode('utf-8').

5. Замена f-strings и форматирования

Задача: перевести старый %-формат или .format() на f-strings для читаемости.

Промт:

Замени все вызовы .format() и %-форматирование на f-strings там, где это возможно без потери функциональности. Верни исправленный код.

Код:
{{code}}

Пример:

# Было
"Hello, %s!" % name
# Стало
f"Hello, {name}!"

6. Обновление работы со словарями

Задача: заменить dict.has_key(), dict.iteritems() и другие методы.

Промт:

Замени устаревшие методы словарей Python 2 на аналоги в Python 3: has_key() -> in, iteritems() -> items(), itervalues() -> values(). Учти контекст использования.

Код:
{{code}}

Пример: AI исправляет 15 вхождений в модуле.

7. Исправление целочисленного деления

Задача: найти места, где / даёт неожиданный результат.

Промт:

Найди все операции деления, которые в Python 2 выполнялись как целочисленные, а в Python 3 дают float. Предложи замену на // там, где нужно сохранить целочисленный результат.

Код:
{{code}}

Пример: 5 / 2 в Python 2 равно 2, в Python 3 — 2.5. AI подскажет, где поставить //.

8. Адаптация импортов и библиотек

Задача: заменить модули, переименованные или удалённые в Python 3.

Промт:

Проверь импорты в коде и замени устаревшие модули Python 2 на актуальные аналоги: ConfigParser -> configparser, Queue -> queue, urllib2 -> urllib.request. Предложи исправления.

Код:
{{code}}

Пример: AI заменит import cPickle на import pickle.

9. Рефакторинг метаклассов

Задача: переписать метаклассы с __metaclass__ на синтаксис Python 3.

Промт:

Преобразуй объявление метакласса из Python 2 (__metaclass__ = Meta) в синтаксис Python 3 (class MyClass(metaclass=Meta)). Учти порядок наследования.

Код:
{{code}}

10. Обновление тестов и assert

Задача: привести тесты к новому синтаксису и избежать ложных срабатываний.

Промт:

Проанализируй тесты на Python 2 и обнови их для Python 3: замени устаревшие assert-методы, исправь импорты, проверь работу с юникодом. Верни исправленный код.

Код:
{{code}}

11. Автоматическая генерация отчёта о миграции

Задача: получить сводку по всем изменениям для документации.

Промт:

Сгенерируй отчёт о миграции: список файлов, количество исправлений по категориям (print, исключения, юникод, словари), рекомендации по тестированию. Формат — Markdown-таблица.

Данные:
{{diff}}

12. Поиск скрытых проблем с байтами и строками

Задача: выявить места, где смешиваются bytes и str.

Промт:

Найди в коде операции, где bytes и str используются вместе без явного преобразования. Это может вызвать TypeError в Python 3. Предложи исправления с encode/decode.

Код:
{{code}}

13. Финальная проверка после миграции

Задача: убедиться, что код соответствует идиомам Python 3.

Промт:

Проверь код на соответствие PEP 8 и идиомам Python 3. Укажи на устаревшие конструкции, предложи улучшения с использованием современных возможностей (f-strings, pathlib, typing).

Код:
{{code}}

Инструменты, которые ускоряют миграцию

Помимо промтов, используйте автоматические конвертеры:

Инструмент Назначение Ссылка
2to3 Базовое преобразование синтаксиса docs.python.org/3/library/2to3.html
futurize Постепенная миграция с поддержкой обеих версий python-future.org
modernize Замена устаревших конструкций на современные pypi.org/project/modernize
pyupgrade Автоматическое обновление синтаксиса github.com/asottile/pyupgrade

Реальный кейс: ускорение миграции в 4 раза

В 2025 году команда из финтех-стартапа мигрировала монолит на 200 000 строк. Вручную они оценивали проект в 6 месяцев. С комбинацией AI-промтов и futurize они завершили за 1,5 месяца, то есть в 4 раза быстрее. Ключевым фактором стало использование промтов для анализа и исправления сложных случаев, которые не покрывались автоматикой: работа с юникодом в API-ответах и метаклассы в ORM.

Выводы

Миграция с Python 2 на Python 3 — не просто замена синтаксиса, а комплексная задача, требующая внимания к деталям. Представленные 13 промтов помогут автоматизировать рутину и сосредоточиться на логике. Комбинируйте их с официальными инструментами и тестированием на каждом этапе. Начните с малого модуля, измерьте ускорение и масштабируйте подход на всю кодовую базу.

Если вы хотите глубже освоить миграцию и рефакторинг с использованием AI, изучите наш курс по Python на asibiont.com — там вы найдёте практические задания и разбор реальных кейсов.

← All posts

Comments