Python or Python3. What is the difference?
![]()
There is no single correct answer here, but we can offer some common observations.
- Some Linux distributions decided during the transition from Python 2 to Python 3 that python should always refer to Python 2, and the command to run Python 3 would be python3 with a 3 at the end. Now that Python 2 is becoming obsolete, this is being relaxed in some distros (i.e. now that they no longer ship Python 2 at all, the python command can be allowed to point to Python 3, too), but this is going to continue to exist in some form for some time.
- See PEP 394
To help us help you debug questions about your installation, you will commonly need to tell us exactly what you installed where and how, and show us the value of your PATH . If you have relevant functions, aliases, or personal shell scripts which shadow the system-wide default ones, show them too. On Unix-based platforms, the type and command commands can be used to show what will be executed (many guidances will tell you to use which or whereis , but don’t; now we have to guess which non-standard command you are using, and where it is going to look). The Windows command whereis provides roughly the same functionality.
Python 2 vs Python 3: краткий обзор и практические соображения
Python – это многофункциональный язык программирования для разработки различных программных проектов. Python вышел в свет в 1991 и назван в честь британской комик-группы Monty Python: так разработчики хотели подчеркнуть, что этот язык программирования настолько прост в использовании, что это даже смешно. Простота установки, относительно понятный синтаксис, немедленное сообщение об ошибках – благодаря таким своим качествам Python является отличным решением как для новичков, так и для опытных разработчиков.
Python является мультипарадигмальным языком программирования (это значит, что он поддерживает несколько стилей программирования, включая объектно-ориентированное программирование и написание сценариев), а потому его можно применить в разработке практически любого проекта. Python всё чаще используется в промышленности такими организациями, как United Space Alliance (главная поддержка шаттлов НАСА) и Industrial Light & Magic (студия анимации Lucasfilm). Python предлагает много возможностей для тех, кто хочет подобрать мощный дополнительный язык программирования.
Язык Python был разработан в поздние 80-е и вышел в 1991 году; его автором является Гвидо ван Россум (Guido van Rossum).
Python разрабатывался как преемник языка программирования ABC, его первая версия уже включала обработку исключений, функции и классы с наследованием. После создания в 1994 году форума конференции Usenet под названием comp.lang.python база пользователей Python значительно выросла, благодаря чему Python стал одним из самых популярных языков программирования для разработки программ с открытым исходным кодом.
Краткий обзор
Прежде чем перейти к потенциальным возможностям и ключевым программным различиям между Python 2 и Python 3, давайте ознакомимся с особенностями этих релизов Python.
Python 2
Вышедшая в 2000 году версия Python 2 сделала процесс разработки более прозрачным и всеобъемлющим по сравнению с предыдущими версиями Python с реализацией PEP.
Примечание: PEP (Python Enhancement Proposal) – техническая спецификация, которая предоставляет информацию членам сообщества Python или же описывает новую функцию языка.
Кроме того, Python 2 предложил множество новых функций: циклический сборщик мусора для автоматизации управления памятью, расширенную поддержку Unicode для стандартизации символов, списковую сборку и т.п. По мере разработки Python 2 набор функций значительно расширился, в том числе появилась унификация типов и классов Python (версия 2.2).
Python 3
Python 3, последняя разрабатываемая версия, уже считается будущим этого языка программирования. Python 3 был выпущен в конце 2008 года, его целью было устранение внутренних конструктивных недостатков предыдущих версий языка. Python 3 сосредоточен на поддержке чистой базы кода и устранении избыточности.
Основные изменения в Python 3.0: замена оператора print встроенной функцией, улучшение способа деления целых чисел и продвинутая поддержка Unicode.
Сначала Python 3 восприняли прохладно, поскольку он не был совместим с Python 2, а это заставляло пользователей делать выбор между привычной и новой версиями языка. Кроме того, многие библиотеки были доступны только для Python 2; но когда команда разработчиков Python 3 подтвердила, что поддержка Python 2 прекращается, большинство библиотек было адаптировано для Python 3.
Python 2.7
Версия Python 2.7 вышла 3 июля 2010 года и должна была стать последней версией Python 2.х.
Версия Python 2.7 была предназначена для пользователей Python 2.х, которым трудно перейти на новую версию, Python 3, и должна была обеспечить совместимость этих версий. Она предоставляла усовершенствованные модули для версии 2.7 (например unittest для поддержки автоматизации тестирования, argparse для разбора параметров командной строки, а также более удобные классы – коллекции).
Таким образом, версия Python 2.7 оказалась в уникальном положении: он стал связующим звеном между Python 2 и Python 3.0, благодаря своей совместимости со многими надежными библиотеками он получил популярность среди программистов. Как правило, сегодня при упоминании Python 2 имеется в виду именно версия Python 2.7.
Версия Python 2.7 по-прежнему остаётся в разработке, которая на данный момент почти полностью состоит из исправлений багов и будет полностью прекращена в 2020 году.
Ключевые различия
Python 2.7 и Python 3 имеют много общих возможностей, однако их не следует воспринимать как взаимозаменяемые версии. Конечно, вы можете писать хороший код и полезные программы в любой из этих версий, однако следует помнить о серьёзных различиях в синтаксисе и обработке.
Ниже мы рассмотрим несколько общих примеров, но, скорее всего, вы столкнётесь с гораздо большим количеством различий, постоянно работая в Python.
Print
В Python 2 print является оператором, а в Python 3 – встроенной функцией. К примеру, чтобы вывести в Python 2 предложение Sharks are my favorite sea creatures, вы можете использовать следующую команду:
print «Sharks are my favorite sea creatures»
В Python 3 print() является функцией, потому, чтобы вывести такое предложение, нужно ввести:
print(«Sharks are my favorite sea creatures»)
Благодаря этому изменению синтаксис языка Python стал более последовательным. Теперь синтаксис функции print() совместим с Python 2.7.
Деление целых чисел
В Python 2 целым считалось любое число, введённое без десятичных знаков. На первый взгляд, это довольно простой способ обработки. Однако при попытке поделить одно целое число на другое бывает результат с плавающей точкой, например:
Но целые числа в Python 2 не могли изменить свой тип, а потому не могли использовать плавающую точку.
Когда два числа по обе стороны символа деления являются целыми числами, деление floor, то есть, для фактора х Python 2 возвращает наибольшее целое число меньше или равное х. К примеру, при делении 5 / 2 таким числом будет 2.
a = 5 / 2
print a
2Чтобы обойти эту проблему, можно добавить десятичные знаки, 5.0 / 2.0, и тогда Python 2 вернет 2.5.
В Python 3 деление целых чисел становится понятнее.
a = 5 / 2
print(a)
2.5Чтобы выполнить деление floor и получить только целую часть числа, нужно использовать следующий синтаксис Python 3:
b = 5 // 2
print(b)
2Это изменение в Python 3 значительно улучшило деление целых чисел.
Поддержка Unicode
Языки программирования обрабатывать строковый тип (то есть последовательность символов) несколькими различными способами, благодаря чему компьютеры могут преобразовывать числа в буквы и другие символы.
По умолчанию Python 2 использует алфавит ASCII. ASCII даже с расширениями ограничен парой сотен символов, и, очевидно, является не самым гибким методом кодирования, особенно это касается символов, не относящихся к английскому алфавиту.
Более универсальный и надежный метод кодировки символов Unicode поддерживает более 128 000 символов. Чтобы использовать Unicode, в Python 2 нужно начинать строку с префикса u, например:
Python 3 использует Unicode по умолчанию. Это не только экономит время разработчика, но и открывает доступ к огромному набору символов. Unicode поддерживает разнообразные символы и эмодзи, а также гарантирует поддержку проекта на мобильных устройствах.
Если вы хотите сделать код Python 3 обратно совместимым с Python 2, вы можете по-прежнему использовать префикс u.
Постоянная поддержка
Самым большим различием между Python 3 и Python 2 является не синтаксис, а тот факт, что Python 2.7 потеряет постоянную поддержку в 2020 году, а Python 3 будет продолжать развиваться, в результате чего он получит более широкие возможности и большее количество исправлений ошибок.
Новейшие разработки посвящены отформатированным строковым литералам, упрощению настройки создания класса и синтаксического способа обработки матричного умножения.
Остающаяся в разработке версия Python 3 предоставляет пользователям своевременное исправление багов и более производительные программы.
Заключение
Python – многофункциональный и хорошо задокументированный язык программирования.
Хотя между Python 2 и Python 3 существует несколько значительных различий, перейти с одной версии на другую очень просто, это требует лишь небольшой дополнительной настройки. Более того, код Python 3 обычно можно запустить и в Python 2.7.
Важно понимать, что чем больше разработчиков будет использовать Python 3, тем быстрее Python 3 будет совершенствоваться и расширяться, учитывая требования своих пользователей.
Что такое Python? Введение в язык Python
Python — это интерпретируемый, интерактивный, объектно-ориентированный и высокоуровневый язык программирования общего назначения c динамической строгой типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода, а также на обеспечение переносимости написанных на нем программ. Задумка по реализации языка появилась в конце 1980-х годов, а разработка его реализации началась в 1989 году сотрудником голландского института CWI Гвидо ван Россумом.
История Python
Язык Python был создан сотрудником голландского института CWI Гвидо ван Россумом в 1991 году. Некоторые концепции для Python были взяты от языка программирования ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). Часто упоминается, что ABC является предшественником языка Python.
За выбором названия Python также стоит интересный факт. Гвидо ван Россум был поклонником популярного в то время комедийного шоу BBC «Летающий цирк Монти Пайтона». Поэтому он решил взять название Python для создаваемого языка программирования.
Python имеет обширное сообщество по всему миру и выпускает новые версии языка довольно часто.
Версии Python
Даты выпуска основных и промежуточных версий:
Python 1.0 — январь 1994 года
Python 1.5 — 31 декабря 1997 года
Python 1.6 — 5 сентября 2000 года
Python 2.0 — 16 октября 2000 года
Python 2.1 — 17 апреля 2001 года
Python 2.2 — 21 декабря 2001 года
Python 2.3 — 29 июля 2003 года
Python 2.4 — 30 ноября 2004 года
Python 2.5 — 19 сентября 2006 года
Python 2.6 — 1 октября 2008 года
Python 2.7 — 3 июля 2010 года
Python 3.0 — 3 декабря 2008 года
Python 3.1 — 27 июня 2009 года
Python 3.2 — 20 февраля 2011 года
Python 3.3 — 29 сентября 2012 года
Python 3.4 — 16 марта 2014 года
Python 3.5 — 13 сентября 2015 года
Python 3.6 — 23 декабря 2016 года
Python 3.7 — 27 июня 2018 года
Python 3.8 — 14 октября 2019 года
Python 3.9 — 5 октября 2020 года
Python 3.10 — 4 октября 2021 года
Python 3.11 — 24 октября 2022 года
Python 2 против Python 3
В большинстве языков программирования, когда выходит новая версия, она поддерживает функции и синтаксис существующей версии языка, чтобы проектам было проще перейти на новую версию. Однако в случае с Python версии Python 2 и Python 3 значительно отличаются друг от друга.
Python 2 Python 3 Год выпуска Python 2 был выпущен в 2000 году. Python 3 был выпущен в 2008 году. Ключевое слово print print является оператором. print является функцией. Хранение строк Строки по умолчанию хранятся в формате ASCII. Строки по умолчанию хранятся в формате Unicode. Деление целых чисел При делении двух целых чисел мы получаем целочисленное значение. Например, 7/2 даст результат 3. При делении двух целых чисел мы получаем значение типа с плавающей точкой. Например, 7/2 даст результат 3.5. Исключения Исключения заключены в нотации. Исключения заключаются в круглые скобки. Изменение переменных Значения глобальных переменных меняются, если они используются внутри цикла for. Значения глобальных переменных никогда не меняются. Итерация Функция xrange() используется для выполнения итераций. Введена новая функция range() для выполнения итераций. Простота синтаксиса Имеет более сложный синтаксис, чем Python 3. Имеет более простой синтаксис по сравнению с Python 2. Библиотеки Многие библиотеки Python 2 не совместимы со стандартом Python 3. Создано множество библиотек, предназначенных исключительно для использования в Python 3. Использование Python 2 не поддерживается с 2020 года. Python 3 более популярен, чем Python 2, и используется до сих пор. Обратная совместимость Код версии Python 2 можно портировать на Python 3, но это непросто. Python 3 не имеет обратной совместимости с Python 2. Преимущества Python
Открытый исходный код и бесплатное использование. Все релизы Python доступны бесплатно. Python можно даже модифицировать и распространять бесплатно. Это значительно снижает затраты на разработку.
Легко учить. В Python мало ключевых слов, простая структура и четко определенный синтаксис. Это позволяет быстро учить язык.
Легко читать. Код Python прост и лаконичен, что делает его более читабельным за код других языков программирования.
Легко поддерживать. Исходный код Python довольно прост в обслуживании.
Большая стандартная библиотека. Большая часть библиотеки Python портируемая и кроссплатформенна, совместима с Unix, Windows и macOS.
Интерактивный режим. Python поддерживает интерактивный режим, который позволяет интерактивно тестировать и отлаживать фрагменты кода.
Портируемость. Python может работать на самых разных аппаратных платформах и имеет одинаковый интерфейс на всех платформах.
Расширяемость. Вы можете добавлять низкоуровневые модули в интерпретатор Python. Эти модули позволяют программистам добавлять или настраивать свои инструменты для повышения эффективности.
GUI-программирование. Python поддерживает приложения с графическим интерфейсом, которые можно создавать и переносить во многие системные вызовы, библиотеки и оконные системы, такие как Windows MFC, Macintosh и X Window System в Unix.
Универсальность. Python — это гибкий язык общего назначения, который полностью поддерживает как процедурное, так и объектно-ориентированное программирование. Благодаря встроенным и сторонним пакетам подходит для выполнения широкого спектра задач.
Эффективность для быстрой разработки. Поскольку Python прост в использовании и не требует компиляции, разработка программ занимает меньше времени. Программы на Python обычно намного короче, чем аналогичные программы на других языках. Это отличный выбор для быстрого создания прототипов в среде быстрой разработки программного обеспечения.
Автоматическое выделение памяти. Python не имеет указателей, и разработчикам не нужно выделять свободное место в памяти. Python автоматически выделяет память, а сборщик мусора «перерабатывает» память из отброшенных объектов. Это означает, что разработчикам не нужно беспокоиться об утечках памяти, некорректных ссылках и указателей или размере каждого объекта.
Доступность сторонних библиотек. В дополнение к обширной встроенной (стандартной) библиотеке Python разработчики имеют доступ ко многим бесплатным внешним библиотекам. Эти сторонние библиотеки легко импортировать и устанавливать с помощью репозитория PyPI (сокр. от «Python Package Index»). Также разработчики могут публиковать свои собственные пакеты.
Обширное сообщество и большая популярность. Python является одним из самых популярных языков программирования. Он имеет большое и активное сообщество пользователей. Легко находить учебные материалы и другие ресурсы, задавать вопросы, искать работу.
Недостатки Python
Не очень быстр. Python медленнее, чем языки C и Java. Python интерпретируемый язык с динамической типизацией, поэтому он должен постоянно проверять тип каждой переменной. Это означает, что Python — не лучший выбор для случаев, где критически важна скорость.
Интенсивное использование памяти. Python не оптимизирован для уменьшения использования памяти. Он может использовать в десять раз больше оперативной памяти, чем программа, написанная на более экономном языке программирования. Однако это отчасти компромисс в обмен на гибкость и простоту использования. Кроме того, сборщик мусора Python не может сразу собрать все «выброшенные» ресурсы, что уменьшает объем доступной памяти. Python — не лучший выбор для случаев с наличием ограниченного объема памяти.
Сложнее избежать ошибок времени выполнения (runtime errors). Python не компилируется до времени выполнения и имеет динамическую типизацию. Поэтому многие проблемы, которые в противном случае были бы обнаружены компилятором, не появляются до тех пор, пока программа не запустится. Это может включать что-то простое, например, синтаксическую ошибку, но может включать и такие проблемы, как попытка выполнить операцию сложения целого числа со строкой.
Взаимодействие с базами данных. Работать с базами данных в Python сложнее, чем в некоторых других приложениях. Python не имеет такого мощного и простого в использовании интерфейса, как Java Database Connectivity (JDBC). Его все еще можно использовать, если операции чтения и записи в базы данных относительно просты. Но это не лучший выбор для приложений, которые имеют сложные взаимодействия с большой корпоративной базой данных.
Отсутствие поддержки многопоточности. Из-за своей архитектуры Python не поддерживает многопоточность. Вместо этого он использует многопроцессорность, когда каждый «поток» выполняется в отдельном процессе Python. Это сильно зависит от контроля операционной системой за планированием и балансировкой процессов и не всегда дает одинаково хорошие результаты.
Альтернативы Python
C/C++: эти два языка являются хорошим выбором, когда важны скорость, производительность и низкое потребление памяти. Они статически типизированы и требуют предварительной компиляции, поэтому генерируют меньше ошибок во время выполнения. Они часто используются для разработки игр и десктопных приложений. Но, к сожалению, они считаются сложными языками для новичков (по сравнению с Python).
JavaScript: Как и Python, JavaScript является интерпретируемым и динамически типизируемым языком. JavaScript имеет наибольшее применение в веб-разработке, поскольку работает на стороне клиента и беспрепятственно взаимодействует с компонентами HTML и CSS. Его можно использовать вместе с Node.js для полного цикла веб-разработки. Python обычно не используется во фронтенде, поэтому он не является хорошей full stack альтернативой.
R: R — это альтернатива Python в Data Science. Однако он больше ориентирован на статистический анализ. R особенно хорош для визуализации данных, но он сложнее и труднее в освоении. Python — это более простой и быстрый вариант для данных общего назначения и численных методов, а также предлагает лучшие возможности в сфере машинного обучения.
Где используется Python?
Разработка десктопных приложений.
Разработка консольных приложений.
Разработка мобильных приложений.
Разработка корпоративных приложений.
Искусственный интеллект (AI).
Машинное обучение (ML).
Приложения для обработки изображений.
Популярные фреймворки и библиотеки Python
Веб-разработка (Backend) — Django, Flask, Pyramid, CherryPy.
Разработка приложений с графическим интерфейсом — Tk, PyGTK, PyQt, PyJs и др.
Машинное обучение — TensorFlow, PyTorch, Scikit-learn, Matplotlib, Scipy и др.
Анализ данных — Numpy, Pandas и др.
Вакансии, связанные с Python
Machine Learning Engineer.
Специалист в Data Science.
Разработка ПО и др.
Примеры Python-кода
В Python не используются фигурные скобки и точка с запятой, но используются отступы (пробелы) для определения блоков кода. Например:
Python 2 versus 3
Disclaimer: This notebook is going to focus on reasons to use Python 3 more than on the details of porting code. See https://lhcb.github.io/developkit-lessons/first-development-steps/06b-python.html for a more complete description and help porting.
Unicode
This is the most impactful, biggest change. All strings now default to Unicode instead of bytes. Supporting both unicode and bytes was originally a library challenge, but has mostly been solved.
- Enables unicode in more places, better supported
- No longer dual builds of Python (wide vs. narrow)
- Encoding/decoding often more explicit
- Can use in Python 2 with from __future__ import unicode_literals (careful!)
- Was originally much slower/more memory
- Encoding/decoding often more explicit
Print as a function
Python 3 changed print to a function. This means even the «Hello World» program changed!