Будет ли Python 3 когда-нибудь завоевать популярность? - PullRequest
23 голосов
/ 22 марта 2010

Я немного изучил Python 2 и Python 3, и кажется, что Python 2 в целом лучше, чем Python 3. Так вот в чем мой вопрос. Есть ли веские причины для перехода на Python 3?

Ответы [ 5 ]

32 голосов
/ 22 марта 2010

В целом, и даже в большинстве деталей, Python3 лучше, чем Python2.

Единственная область, где Python 3 отстает - это в отношении сторонних библиотек .
Что делает Python великолепным, это не только его внутренние характеристики как языка, так и его обширная стандартная библиотека, а также существование целой " экосистемы " библиотек, которые поддерживают так много специфических приложений языка.
Несколько таких библиотек на данный момент не полностью перенесены в Python 3.x, и это иногда приводит к тому, что люди работают под Python 2.x.

Эта ситуация может показаться чем-то вроде проблемы курицы и яйца : разработчики приложений не перейдут на 3.x, пока библиотеки не «доберутся», разработчики библиотек предпочитают поддерживать только одну ветку и ожидание в попытке рассчитать время портирования на Py3k таким образом, чтобы вскоре после этого они смогли запустить свои ветви Py2.x в обслуживание.

Эта ситуация является своего рода свидетельством того, что люди удовлетворены Python 2.x (или выражены более негативно, по поводу отсутствия убедительных стимулов для перехода на 3.x; в то время как Py3k лучше и готовый к лучшему, пока, как есть, у него нет никаких функций, которые могли бы побудить перейти к 3.x " массово ".) Это сказало, я полагаю, импульс эффективно в пользу Python 3 .
Чтобы подкрепить это, я собирался упомянуть вероятность того, что Unladen Swallow будет портирована только на Py3k-only, обеспечивая некоторый сильный стимул для перемещения. Но Алекс Мартелли начал отвечать на этот вопрос и использует этот пример. Очевидно, что Алекс говорит из первых рук об этих вопросах дорожной карты, пожалуйста, получите это от Мастера!

Предупреждение относительно версий Py3k : Обязательно используйте самую последнюю версию (в настоящее время 3.1.2, скоро 3.2.x заменит ее как самую последнюю * 1035) * stable version).
Остерегайтесь того, что некоторые люди (например, я) иногда используют выражение "3.0" для ссылки на общее имя для всех Py3k (или даже для его текущей версии). Краткосрочная версия 3.0 per se теперь "несуществующая" и не представляет интереса, но может быть судебно-медицинскими экспертами; -)

18 голосов
/ 22 марта 2010

Как уже упоминалось в других ответах, единственное реальное (и решающее) текущее преимущество Python 2 по сравнению с Python 3 состоит в том, что первый уже имеет огромное количество сторонних расширений (и вспомогательных инструментов, таких как IDE и тому подобное),к которому последний только постепенно движется.Эта ситуация постепенно улучшается, поскольку существующие расширения перенесены для поддержки Python 3;рано или поздно кто-то выпустит расширение или инструмент Py3-only, которые важны для вас, и это может вас перевести в фактическое использование Py3 для нового проекта (и это произойдет для многих различных значений «вы»; -).

Разработка ядра Python в основном сместилась в область Python 3 - хотя Python 2.7 скоро выйдет, я не уверен, сколько будущих важных улучшений, если таковые будут, будут возвращаться в версии Python 2.В частности, я сомневаюсь, что Unladen Swallow будет - если это так, то в какой-то момент CPython 3 получит важное преимущество в скорости по сравнению с CPython 2, что станет фактором опрокидывания для других новых проектов (и портов существующихпроекты) пока.

Не уверен, что создает впечатление, что «Python 2 намного лучше, чем Python 3», разумеется, в терминах просто «собственно Python», то есть частей, которые PythonSoftware Foundation выпускает (основной код, библиотеки, документы ...): я категорически не согласен с этой оценкой.Python 3 лучше с точки зрения простоты (удаления лишних слов) и наличия нескольких функций, которые позволяют использовать будущие сторонние расширения и инструменты (такие как улучшенное взаимодействие с метаклассом и синтаксис для аннотации параметров);На самом деле я не могу найти никаких преимуществ для Python 2 в терминах «собственно Python».«Экосистема» вокруг Python, как уже обсуждалось, - это другое дело, но она уже прогрессирует (в своем собственном темпе, конечно, что определенно не находится под контролем Python Software Foundation, а скореемногие внешние группы разработчиков и несколько фирм).

Например, PyQt уже доступен для Python 3 (а также 2), и вы можете использовать PostgreSQL (великолепный движок базы данных SQL с открытым исходным кодом, оченьболее стандартным, чем MySql) через py-postgresql .Итак, если сторонние расширения, к которым вы стремитесь - это, скажем, wxpython и mysqldb, возможно, вы можете попробовать эти альтернативы (я, конечно, предвзят, поскольку я давно предпочел Qt wxWidgets и PostgreSQL MySQL,по чисто техническим причинам - но быстрый перенос соответствующих расширений Python на Python 3 также намекает на то, что эти расширения разрабатываются более активно и энергично, так что это может быть еще одним толчком к их использованию; -).

7 голосов
/ 22 марта 2010

Python 3 станет новым стандартом в будущем.

Поскольку в ближайшее время в Python 3 не запланировано никаких серьезных изменений, в конечном итоге к нему переедет больше людей. Итак ... хотя сейчас есть много приложений Python 2, в конечном итоге многие из этих приложений будут перенесены. Существует даже инструмент для этого, 2to3 .

Кроме того, что заставляет вас говорить, что python 2 лучше, чем 3? В Python 3 было сделано много языковых улучшений, и даже IDLE улучшен. Одной из основных причин обновления является то, что unladen-swallow подходит к Python 3 , что значительно улучшит производительность.

6 голосов
/ 22 марта 2010

Главное, что сейчас сдерживает Python 3.x, - это отсутствие сторонних библиотек. Я буду конвертировать свой код, как только SciPy будет портирован.

0 голосов
/ 22 марта 2010

Больше итераторов (в таких вещах, как dict.keys()) будет большим подспорьем для веб-приложений.

Основная команда вложит больше усилий в новую версию. Новые книги могут быть посвящены Python 3 (см. «Погружение в Python»), но настоящая работа все еще выполняется в Python 2.

Рано или поздно большие библиотеки (numpy, wx, django) будут портированы. До тех пор, пока эти три переключателя не появятся, я не вижу много людей, использующих Python 3. Но это не невозможные проекты для переноса.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...