Как быть готовым к Python 3? - PullRequest
4 голосов
/ 10 июля 2010

Каковы текущие правила написания кода Python, который будет проходить чисто через 2to3 , и каковы практики, которые лучше всего подходят для написания кода, который не будет навсегда утрачен в версии 2.

Я прочитал на форумах SciPy / NumPy, что "100% тестовое покрытие" (модульное тестирование) важно для многих людей, и я не уверен, что это будет применяться ко всем. Безусловно, наличие разумного набора модульных тестов для тестирования кода после преобразования кажется разумным шагом.

Есть ли другие вещи? Что делают опытные Pythonistas, если они пишут код 2.x, который, как они надеются, прошел «чисто» в процессе 2to3.

Я ищу конкретные примеры "не делай этого", а также некоторые более общие "передовые практики", но полезны конкретные примеры "что можно и чего нельзя".

Предположим, что фреймворки, библиотеки (Django, SciPy / NumPy) и все остальные расширения C, которые нам нужны, в конечном итоге портируются на Python3, и я спрашиваю, как вы пишете и поддерживаете чистый код языка Python, который вы пишете сами .

Обновление: возможно, что я действительно хочу, это "руководство по стилю" и список устаревших функций, от которых все уже держались подальше. Я порезал зубы на Python 1.5 и перешел на 2.0, а потом не очень следил за большей частью эпохи 2.5 / 2.6, использовал их, но на самом деле мой код больше эпохи 2.1.

1 Ответ

2 голосов
/ 13 июля 2010

Я бы сказал:

  • Прочитайте " Что нового в Python 3.0 ".Очень информативно.
    • В частности, если вы вообще заботитесь о кодировке Unicode или текста, найдите время, чтобы понять, что изменилось в 3.x.Это, вероятно, одна из самых хитрых вещей, которые нужно изменить для Python 3.x.
  • Получите Python 2.6 или 2.7 и запустите свой код с флагом -3.Он расскажет вам о вещах в вашем коде, которые необходимо изменить.
  • Перед использованием сторонних пакетов проверьте, есть ли у них версия Python 3.x.Если нет, проверьте веб-сайт пакета, списки рассылки, репозитории контроля версий и т. Д., Чтобы увидеть, насколько активно разрабатывается пакет и есть ли план действий по поддержке Python 3.x.
  • Загрузите Python 3.x ипопробуй это!Следует признать, что это может быть нецелесообразно, если вы заботитесь о коде, который в настоящее время зависит от пакетов, которые еще не поддерживают Python 3.x (например, wxPython или Django).
...