Советы по обновлению до python 3.0?

Таким образом, с окончательными версиями Python 3.0 (и теперь 3.1) многие люди сталкиваются с проблемой того, как обновляться, не теряя половину своей базы кода из-за несовместимости в обратном направлении.

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

Вероятно, хорошим местом для начала является «использовать 2to3 для преобразования вашего кода python 2.x в 3.x» 🙂

  • Что такое чистый способ преобразования процентной ставки строки в float?
  • Палиндром Python 3.2
  • Можно ли получить элемент из PriorityQueue без его удаления?
  • Tensorflow: восстановление графика и модели, а затем выполнение оценки на одном изображении
  • Как установить, какая версия python sublime text использует
  • Вычислить среднее из каждых x строк в таблице и создать новую таблицу
  • Аккуратный способ выскакивания ключа, значение PAIR из словаря?
  • Как интегрировать SimpleGUI с оболочкой Python 2.7 и 3.0
  • 3 Solutions collect form web for “Советы по обновлению до python 3.0?”

    Во-первых, этот вопрос очень похож на то, как вы планируете обрабатывать миграцию на Python 3? , Проверьте ответы там.

    В Python Wiki также есть раздел о переносе приложений на Python 3.x

    Примечания к выпуску для python 3.0 содержит раздел о портировании. Я цитирую советы:

    1. (Предпосылка 🙂 Начните с отличного охвата тестированием.
    2. Порт на Python 2.6. Это не должно быть больше, чем среднее значение por от Python 2.x до Python 2. (x + 1). Убедитесь, что все ваши тесты прошли.
    3. (Все еще используйте 2.6 🙂 Включите переключатель командной строки -3. Это позволяет предупреждать о функциях, которые будут удалены (или изменены) в версии 3.0. Запустите свой тестовый набор еще раз и исправьте код, который вы получите предупреждения до тех пор, пока не останется никаких предупреждений, и все ваши тесты все равно пройдут.
    4. Запустите транслятор источника 2to3 через исходный код. (См. 2to3 – Автоматический перевод кода на Python с 2 по 3 для получения дополнительной информации об этом инструменте.) Запустите результат перевода в Python 3.0. Вручную устраните все оставшиеся проблемы, устранив проблемы до тех пор, пока все тесты не пройдут снова.

    Не рекомендуется пытаться писать исходный код, который работает без изменений как под Python 2.6, так и с 3.0; вам придется использовать очень искаженный стиль кодирования, например, избегать операторов печати, метаклассов и многое другое. Если вы поддерживаете библиотеку, которая должна поддерживать как Python 2.6, так и Python 3.0, лучший подход заключается в том, чтобы изменить шаг 3 выше, отредактировав версию версии 2.6 и снова запустить транслятор 2to3, вместо того, чтобы редактировать версию 3.0 исходный код.

    Я пишу бесплатную книгу об этом. Вы можете прочитать это здесь:

    http://python3porting.com/

    Вкратце:

    1. Убедитесь, что все ваши сторонние библиотеки доступны для Python 3.
    2. Подготовьте свой код, удалив общие двусмысленности:
      • Используйте //, если вы действительно хотите целочисленное деление.
      • Убедитесь, что вы открыли флаги двоичных файлов с флагом 'b', чтобы четко указать, означает ли вы, что данные должны быть двоичными или нет.
    3. Чем выше ваш охват, тем лучше.
    4. Убедитесь, что он работает без предупреждений в разделе «Python 2.7 -3».
    5. Теперь запустите 2to3.
    6. Исправлены ошибки.

    Вот и все, более или менее.

    Без действительно веских оснований для обновления я бы придерживался того, что работает. Я посмотрел на обновление скриптов, которые я использую ежедневно, и это было слишком много работы, но я ничего не мог поделать.

    «Если он не сломался, не исправляй!»

    Python - лучший язык программирования в мире.