Какую версию Python выбрать?
Собираюсь изучать Python. Область применения самая обширная: Web, Machine Learning, обработка больших данных, графиков. Какую версию выбрать? Нормально ли работает Джанго с 3 версией Python?
Для 2-й версии больше описание и самоучителей.
Отслеживать
80.8k 9 9 золотых знаков 78 78 серебряных знаков 134 134 бронзовых знака
задан 3 окт 2014 в 6:54
477 5 5 серебряных знаков 17 17 бронзовых знаков
Как по мне, начните с 2.х и учите активно, 3.х — смотрите, сравнивайте, понимайте отличия. Я думаю, через 3-5 лет ветка 2.х догонит современную 3.х. А 3.х тем временем превратиться в 4.х или даже 5.х. Я отношусь к 3 версии как к некой стабильной бете языка, а 2 — как стабильной для промышенного кода. Но никто не мешает писать код так, чтобы он работал в обеих версиях питона.
3 окт 2014 в 7:01
Принципиальная разница в производительности есть ?
3 окт 2014 в 7:12
@xmaster83, 1. Принципиальной разницы нет. 2. Это вообще последнее, о чем нужно думать, — производительность конечного приложения будет в значительно большей степени зависеть от выбранных алгоритмов и архитектуры, чем языка.
3 окт 2014 в 7:24
Я решаю разные алгоритмические задачи с числодробилками. 2.7 обычно в 1.5 — 2 раза быстрее 3.3. (при почти одном и том же коде). Кстати, самый большой затык — это range-xrange в циклах. В втором питоне range генерит полный список и потом итерируется. Если диапазон большой — памяти кушает много. xrange — это ленивая операция, она не отдаст следующий элемент, пока это не нужно и ей побоку на размеры диапазона. Так вот в 3 питоне range ведет себя как xrange второго, а вот xrange в третьем нет.
3 окт 2014 в 7:33
@KoVadim, а где затык? Все, кто более-менее программируют на питоне, знают, что xrange надо использовать почти везде. Вот если бы в 3-м питоне был xrange, и он вел бы себя как range во 2-м, это бы был затык =)
3 окт 2014 в 19:52
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Учить можно обе. По сути, это один язык. А под конкретные проекты уже выбирать, что более подходящее — 2.7 или 3.
Фундаментальна разница между версиями по строгости подхода к смешиванию Юникода и байтовых строк. Стандартные типы более широко используют итераторы по умолчанию. В 3-й версии также убраны некоторые шероховатости, такие как неявные относительные импорты, синтаксис для исключений поправлен, утечка имён в списках включения (list comprehension) и т.д. Добавлен новый синтакс, например, yield from , который позволяет удобно программировать c такими вещами, как asyncio. Часть стандартных модулей были реорганизованы, например, urllib2.urlopen() функция — это urllib.request.urlopen() в Питоне 3. Гугл всегда подскажет, где что лежит. Поверхностные вещи, такие как print функция в 3-й версии и print инструкция во 2-м, по мере использования узнаются.
Многие проекты используют один исходный код для Питона 2 и 3. Так что даже не нужно разные API учить. Многие популярные библиотеки могут работать на Питон 3.
Python 2 vs Python 3
Часто в сообществе программистов возникали споры о том, какую версию Python лучше использовать: Python 2 или Python 3.
Сегодня Python 3 — явно лучший вариант для новичков или тех, кто хочет обновить свои знания. Здесь мы рассмотрим, почему Python 3 лучше и почему большинство компаний массово переходят с Python 2 на 3.
Несмотря на очевидное преимущество третьей версии, все же существуют ситуации, когда использование второй версии языка более выгодно и осмысленно.
Общий обзор
Прежде чем рассматривать потенциальные возможности Python 2 и Python 3, и ключевые различия между ними, взглянем на историю последних крупных выпусков Python.
Историю релизов Python по годам можно посмотреть тут .
Python 2
Выпущенный в конце 2000 года, Python 2 заявлял о более прозрачном и инклюзивном процессе разработки языка, по сравнению с предыдущими версиями Python с реализацией PEP (Python Enhancement Proposal). Техническая спецификация представляла информацию членам сообщества Python, а также описывала новые функции языка.
Python 2 включал множество других программных возможностей, таких как циклический сборщик мусора, разработанный для автоматизации управления памятью, расширенную поддержку Unicode для стандартизации символов и создания списков.
Поскольку Python 2 продолжал развиваться, было добавлено больше функций, включая объединение типов и классов Python в единую иерархию в версии Python 2.2.
Python 3
На настоящий момент Python 3 считается будущим Python и является версией, которая все еще находится в разработке. Третья версия была выпущена в конце 2008 года с целью устранения внутренних недостатков дизайна предыдущих версий языка.
При разработке Python 3 основное внимание уделялось очистке кодовой базы и удалению избыточности, что оставляет возможность решать задачу лишь одним способом. Произошло изменение оператора print, теперь он стал встроенной функцией. Также было проведено улучшение способа разделения целых чисел, была предусмотрена лучшая поддержка Unicode.
Сначала Python 3 принимался медленно из-за того, что язык не был совместим с Python 2, что требовало от людей принимать решение о том, какую версию языка использовать. Кроме того, многие библиотеки пакетов были доступны только для 2-й версии, но поскольку команда разработчиков Python 3 заявила, что поддержка Python 2 заканчивается 1 января 2020 г. , большая часть библиотек была перенесена на Python 3. Более широкое внедрение 3-й версии можно проследить по количеству пакетов, которые теперь обеспечивают поддержку Python 3, которая на момент написания статьи включает в себя более 360 пакетов .
Немного истории
Начнем с краткой истории Python второй и третьей версий:
- Python 2.0 была выпущена в 2000 году. Его последняя версия, 2.7, была выпущена в 2010 году.
- Python 3.0 была выпущена в 2008 году. Его новейшая версия 3.6 была выпущена в 2016 году, а версия 3.8 была доступна уже в декабре 2019 года.
- Хотя Python 2.7 все еще широко используется, внедрение Python 3 быстро растет. В 2016 году 71,9% проектов использовали Python 2.7, но к 2017 году показатель упал до 63,7%. Это говорит о том, что сообщество разработчиков все чаще обращается к Python 3 при разработке текущих приложений.
Основные отличия Python 2 от Python 3
Есть много различий между этими версиями программирования на Python, но вот пять основных.
1 Python 2 — это стандарт, а Python 3 — это будущее Поскольку Python 2 был самой популярной версией более пятнадцати лет, она все еще является актуальной среди некоторых разработчиков приложений. Но, сейчас уже все больше компаний переходят к использованию третьей версии, поэтому новичкам следует обратить внимание именно на нее. Изучение второй версии Питона на сегодняшний день уже является пустой тратой времени.
2 Python 2 и Python 3 имеют разные (иногда несовместимые) библиотеки Сегодня многие разработчики создают библиотеки исключительно для использования с третьей частью. Точно так же многие старые библиотеки, созданные для Python 2, не совместимы с последующей версией. Возможно, у вас получится портировать библиотеку 2.x на 3.x., но это может быть сложно и потребовать много времени — это определенно не уровень новичков.
3 Лучшая поддержка Unicode в Python 3 В Python 3 текстовые строки по умолчанию являются Unicode. В Python 2 строки хранятся как ASCII по умолчанию — вам нужно добавить «u» если вы захотите сохранить строки в формате Unicode в Python 2.x.
Это важно, потому что Unicode более универсален, чем ASCII. Строки Unicode могут хранить буквы на иностранных языках, латинские буквы и цифры, символы, смайлики и т. д., предлагая пользователю более широкий выбор.
4 Python 3 улучшил целочисленное деление В Python 2, если вы пишете целое число (без цифр после десятичной точки), оно округляет ваш расчет до ближайшего меньшего целого числа:
a = 5 / 2 print a 2
Чтобы получить точный ответ, придется записать эту формулу как 5.0 / 2.0
Однако, в Python 3 выражение вернет ожидаемый результат:
b = 5 / 2 print(b) 2.5
Поэтому можно работать не беспокоясь о добавлении этих дополнительных нулей. Именно такие улучшения облегчают задачу изучения языка программирования всем новичкам.
5 Версии имеют разный синтаксис «print» Это всего лишь синтаксическое различие, и некоторые могут считать его непринципиальным, тем не менее, знать о нем полезно. По сути, в Python 3 оператор print был заменен функцией print (). Например, в Python 2 это:
print «Hello, World!»
Если вы собираетесь изучать программирование на Python впервые, то это не должно сильно вас удивить. Но если вы ранее работали с Python 2, то изменения могут сбить вас с толку.
Почему компании переходят с 2-ой версии на 3-ю?
Как упоминалось ранее, большинство компаний все еще используют Python 2 по определенным причинам, но все больше организаций начинает переходить с 2-ой на 3-ю версию. Рассмотрим ситуацию на примере Instagram и Facebook — команды, которые перешли с Python 2 на 3 или находятся в данный момент в процессе (для определенных модулей) — и почему они решили это сделать.
Instagram В 2017 году Instagram перенес большую часть своего кода с Python 2.7 на Python 3. Причины, по которым они это сделали:
- Python традиционно не является типизированным языком, но Python 3.5 поддерживает типизацию, что устраняет конфликты разработки при работе с новыми частями кода.
- Каждая новая версия Python продолжает работать быстрее. Между тем, никто не работает над тем, чтобы ускорить работу Python 2.7.
- У Python 3 поддержка сообщества работает на порядок лучше.
Facebook В настоящее время Facebook находится в процессе обновления своей инфраструктуры и систем обработки данных с Python версии 2 до Python версии 3.
Согласно данным с RealPython:
Простота использования библиотек Python подразумевает, что производственным инженерам не нужно писать или поддерживать большое количество кода, что позволяет им сосредоточиться на оптимизации проекта.
Это также гарантирует, что инфраструктура Facebook способна эффективно масштабироваться.
С какой версии языка мне стоит начать, если я новичок?
Самый простой и короткий ответ — с последней версии. Обновления выпускаются постоянно и не имеет смысла гоняться за призраками старых версий. Большинство изменений, внесенных в Python 3 направлены на упрощение, поэтому новичкам понравятся подобные нововведения, они сделают процесс обучения проще.
Немаловажным фактом выступает и то, что с апреля 2020 года версия 2.7 больше не будет поддерживаться, поэтому не имеет никакого смысла браться за изучение технологии, которая перестанет быть актуальной менее, чем через несколько месяцев. Факт, актуальность будет спадать постепенно, но, этот процесс неизбежен в ближайшем будущем.
В каких случаях имеет смысл изучать 2-ую версию?
И все же, существует несколько ситуаций, когда изучение второй версии необходимо:
- Если вы хотите стать инженером DevOps и работать с такими инструментами, как Fabric или Ansible. В таком случае, вам придется работать как с Python 2, так и с 3 (поскольку некоторые части библиотек второй версии не имеют полной поддержки у Python 3).
- Если в вашей компании имеется устаревший код, написанный на Python 2, и вам необходимо научиться поддерживать его.
- Если у вас есть проект, который зависит от определенного стороннего программного обеспечения или библиотек, которые нельзя перенести на Python 3.
К счастью, с какой бы версии вы ни начали свое обучение, вам будет достаточно легко перейти на новейшую версию, т.к. база везде общая.
Если же вы уже пишете на Python 2.x, перейти на 3-ю версию поможет руководство на официальном сайте . Также существует программа, способная автоматически транслировать код 2-й версии Питона в код для Python 3 — 2to3 .
Django, Flask или Tornado: какой Python-фреймворк выбрать новичку
Django, Flask и Tornado — самые актуальные и при этом наиболее популярные Python-фреймворки. В этой статье CTO wemake.services Никита Соболев сравнивает их возможности и пытается помочь читателю выбрать лучший инструмент.
Зачем нужны фреймворки
Фреймворки повышают скорость написания кода и позволяют сосредоточиться на логике приложения, а не на написании базовых функций. Это наборы различных пакетов и модулей, которые помогают программисту в тысяче нюансов: например, в работе с базами данных, локалями, валидацией, шаблонизацией, обработкой ошибок или защитой программы.
Основное преимущество Python перед другими языками программирования — возможность быстро писать код. Если распространить это суждение на фреймворки, то их главная задача — дать возможность сэкономить время на написании простых команд, что существенно повышает скорость разработки.
Хекслет для начинающих: Попробовать обучение на Хекслете вы можете на Подготовительном курсе по основам Python. Теория и практика в браузере, вебинары, лайвкодинг, помощь наставника
Сравним Django, Flask и Tornado в нескольких категориях: простота входа, производительность, гибкость и асинхронность.
- Django — самый популярный Python-фреймворк, который используют разработчики в Pinterest, Dropbox, Spotify, The Washington Post и других компаниях. На сегодняшний день сообщество Django включает более 11 тыс. разработчиков из 166 стран мира.
- Flask — это микрофреймворк для разработки на Python минималистичных каркасов веб-приложений, который предоставляет базовые возможности, а сами приложения реализуют какой-то функционал. С его помощью можно создавать небольшие приложения, для которых не нужен широкий спектр возможностей большого фреймворка — он представляет собой скелет, на который можно установить то, что нужно разработчику.
- Tornado — сравнительно быстрый веб-фреймворк, который может обрабатывать тысячи одновременных постоянных подключений. Обычно он используется для веб-сокетов и других приложений, требующих долговременного соединения с каждым пользователем.
Удобство для новичков
В случае с фреймворками удобство для новичков определяется в первую очередь наличием подробной документации и легкостью интеграции, а не внешней простотой интерфейса. Найти подробный гайд для новичков и интегрировать разные сложные компоненты (аутентификацию, базу данных, кэширование) — распространенная проблема.
Flask и Tornado выглядят проще, чем Django, но страдают от отсутствия понятной документации. Про Tornado, среди прочего, мало материалов. Материалов о Django, напротив, очень много, а вопрос интеграции в нем решается внесением правок в конфигурационный файл. Чтобы выполнить сложную интеграцию во Flask или Tornado, нужно написать много кода. Это нетривиальная задача и в ней новички часто ошибаются.
Новичкам можно начинать с Flask — это самый простой Python-фреймворк, который подходит только для простых приложений. На его примере можно изучить жизненный цикл вопросов-ответов, которые проходят request и response. Кроме того, с его помощью масштабировать простые приложения проще, чем в Django. Tornado стоит использовать, если ваше приложение использует WebSocket или серверную часть NoSQL. Он тоже достаточно минималистичный, но более узконаправленный, чем Flask или Django.
Как только вы доберетесь до интеграции сложных компонентов или начнете разрабатывать многостраничные приложения, лучше перейти на Django. В этом фреймворке есть некоторый барьер сложности, но он одноразовый — нужно разобраться со связями между компонентами. Однако при работе с большими и сложными приложениями в этом фреймворке отпадают все вопросы интеграции. Кроме того, при правильном обращении Django может выглядеть также просто, как Flask — вот наглядный пример .
Если говорить о сообществе, то, помимо документации и туториалов, о Django есть подкасты, рассылки и конференции. У Flask и Tornado сообщества значительно меньше — в том числе потому, что они больше подходят для небольших проектов.
Читайте также: Как сохранять фокус на протяжении всего обучения: советы от Хекслета
Производительность
Производительность фреймворков часто оценивается количеством «хэллоуворлдов в секунду»: например, так проверяют количество соединений, которые сервис может держать одновременно, или скорость ответов. Это чисто теоретические измерения, которые никак не отражают реальную производительность.
Код на Python сравнительно медленный и потребляет много ресурсов — производительности уровня Rust в этом языке добиться не удастся. Как говорилось выше, этот показатель на Python определяется скоростью написания кода, поэтому рассмотрим фреймворки с этой точки зрения.
Благодаря простой интеграции, а также широкому выбору библиотек и компонентов, Django с большим отрывом побеждает Flask и Tornado. В последних решения костыльные и собирать их нужно по отдельным элементам, что сильно увеличивает время работы над сервисом.
Гибкость
Согласно определению фреймворк — набор рамок (фреймов), которые предлагают определенный способ выполнить определенное действие. Поэтому в случае с фреймворком гибкость — скорее недостаток, чем преимущество.
Во Flask гибкость сравнительно высокая: например, он позволяет создавать и использовать глобальные объекты, а также контекст треда для сложения промежуточных объектов. Меньше всего гибкости в Django, а Tornado находится где-то посередине между ними. В пользу Django говорит и то, что все приложения на этом фреймворке получаются одинаковыми, а на Flask — сильно отличаются друг от друга.
Асинхронность
Python и его библиотеки изначально не предназначены для асинхронного программирования, поэтому использование async/await создает дополнительную сложность при написании кода. Эти функции недостаточно просто добавить в код — их нужно еще правильно написать. Это требует дополнительного времени и снижает производительность.
В Django есть инструмент, который позволяет сделать код асинхронным при смене класса воркера jUnicorn на jevent . В зависимости от ситуации такой подход позволяет выиграть в производительности от 10% до 100% по сравнению с использованием async/await .
Заключение
Выбирать фреймворк следует исходя из характеристик проекта, который вы разрабатываете:
- Если проект большой и требует интеграций сложных компонентов, стоит выбрать Django.
- Для небольших проектов, обучения или приложений с веб-сокетами и NoSQL больше подойдут Flask и Tornado.
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях
Какую версию Python выбрать для изучения?
Django на какой версии работает?
По библиотекам ощущается ли недостаток на 3 версии и в каких областях?
- Вопрос задан более трёх лет назад
- 4459 просмотров
3 комментария
Простой 3 комментария
На любой linux можно поставить любой питон, можно сразу оба.

Владимир Куц @fox_12 Куратор тега Python
Django на какой версии работает?
И на 2-м и на 3-м работает

ДиванСпецназ @divanspecnaz Автор вопроса
dableproger, Владимир Куц, ну тогда только про библиотеки вопрос их количество
Решения вопроса 3

Шамуэй @gordon_shamway
Python 3 вышел 9 лет назад, уже тогда нужно было забыть про второй python.
Ответ написан более трёх лет назад
Нравится 4 5 комментариев
moh-mog-drinks @moh-mog-drinks
Может и надо.
Но ведущие конторы до сих пор используют именно Python 2.7. Например, Google в его Google Cloud SDK — точно.
И отказ от этого не предвидится.
Дистрибутивы ОС составляют люди поумнее вас.
И не зря суют туда по умолчанию 2-й Питон.
Но, вот уже 9 лет прошло — и 3-й Питон только начинает проникать в дистрибутивы.
moh-mog-drinks, лол. В дистры пихают 2ой питон потому что куча легаси тулзов на нём. 2ой питон давно не обновляется, только баги фиксятся. Из последнего «нововведения» помню только переписанные свичи на Си, чтобы быстрее работало. И это было взято из, о боже, третьего питона.
moh-mog-drinks @moh-mog-drinks
Roman Kitaev,
А зачем обновлять язык? Не библиотеки! А сам язык? Если он уже вполне рабочий?
Язык С вон вообще с 1989 года не обновляли.
А все новшества закономерно идут в Python в ветку 3, а не в ветку 2. Что вас в этом удивляет?
Задача Python 2 — стабильность.
Там не только багофисы.
Но и оптимизации производительности интерпретатора.
moh-mog-drinks @moh-mog-drinks
В дистры пихают 2ой питон потому что куча легаси тулзов на нём.
Буквально 1 год назад Google выпустил свой новый Cloud SDK, на Python 2, но не на Python 3.
Так что не все то легаси что вам кажется.
Если бы Питон 2 был бы не юзабелен, то я бы с вами согласился. И ребята из Гугля тоже.
Но они считают вторую версию вполне подходящей и для новых проектов.
moh-mog-drinks @moh-mog-drinks
В дистры пихают 2ой питон потому что куча легаси тулзов на нём
Я бы с вами согласился, если бы пихали сразу две версии — 2-ю для старых тулзов и 3-ю для новых тулзов.
Но как-то обходится без этого, за исключеним редких случаев.
То есть новые тулзы до последнего времени писали (да и продолжают, как показывает пример Google) писать в расчете на старую версию Питона.
А библиотеки, да, считается хорошим тоном и показателем квалификации разработчика — писать универсально.
moh-mog-drinks @moh-mog-drinks
В Ubuntu Python 3 появился только вот-вот.
Вплоть до недавнего времени Ubuntu поставлялась с Python 2
Ответ написан более трёх лет назад
Нравится 1 11 комментариев
moh-mog-drinks @moh-mog-drinks
Это вовсе не одно и то же.
Python 3 давно уже «может быть». Уже лет 7. В качестве вспомогательной версии.
Вопрос в том, что ставят по умолчанию сразу же с базовым комплектом.
Специально обращал внимание на версию Python при всех установка Ubuntu (сталкивался с версиями Ubuntu 12-17).
Так вот по умолчанию вплоть до самых недавних времен основным ставился Python 2.7 в Ubuntu.
И только совсем недавно — стали ставить основным Python 3 в Ubuntu.
Буквально полтора года назад — Python 3 был всего лишь текущей целью для будущего использования в дистрибутиве в качестве основного. То есть они только-только готовились к пришествию Python 3.
https://wiki.ubuntu.com/Python/3
А в текущей версии, да, Python уже основной.
moh-mog-drinks @moh-mog-drinks
Pavel Denisov,
Стандарт де-факто в индустрии.
moh-mog-drinks @moh-mog-drinks
Pavel Denisov, ИТ-шной индустрии, бро.
moh-mog-drinks @moh-mog-drinks
А у тех кто составляет дистрибутивы и SDK.
Вопрос-то в том:
что именно они до последнего держали в качестве основного Python 2 и многие продолжают это делать.
Думаю, эти ребята поумнее вас и получше разбираются в том, что следует включать в дистрибутив.
Уже какой-какой дистрибутив, но Ubuntu нельзя обвинить в отсталости — версии ядра в свежих выпусках свежие. На Wayland перешли. Systemd внедрили одни из первых.
Так что раз эти хорошо оплачиваемые квалифицированные ребята держали Python 2 до последнего — думается они лучше вас понимают что сегодня является стандартом де-факто, а что еще только грядет.
moh-mog-drinks @moh-mog-drinks
Это SDK переписано с нуля. Недавно.
До него было совершенно другое SDK, с другой организацией файлов, другими утилитами и пр.
moh-mog-drinks @moh-mog-drinks
Сейчас в большинстве (99%) случаем нет причин использовать python2
Думаю, что ребята из Гугля все же поумнее вас. А они все же выбрали Python 2 даже для своих свежих проектов.
Вообще-то на момент выхода Python 3 уже было куча споров — что он нафиг никому не нужен в таком виде.
Так как Python 2 достаточно хорошо и уже широко используется, а Python 3 ломал совместимость.
Гвидо сделал очень неаккуратно Python 3.
Долгая история C, C++, Java, JavaScript, C# — показывает, что можно развивать язык, не ломая совместимость столь жутким образом как это реализовано в «Python 2 -> Python 3»
Вот потому переход на Python 3 и затянулся на 9 лет.
За это время и Python 2 не стоял на месте — развивался и интерпретатор и библиотеки под него.
Что все отодвигало и отодвигало массовое применение Python 3.
