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?
Data Science.
Date Mining.
Разработка десктопных приложений.
Разработка консольных приложений.
Разработка мобильных приложений.
Разработка корпоративных приложений.
Разработка веб-приложений.
Разработка ПО.
Искусственный интеллект (AI).
Машинное обучение (ML).
Приложения для обработки изображений.
Распознавание речи.
Популярные фреймворки и библиотеки Python
Веб-разработка (Backend) — Django, Flask, Pyramid, CherryPy.
Разработка приложений с графическим интерфейсом — Tk, PyGTK, PyQt, PyJs и др.
Машинное обучение — TensorFlow, PyTorch, Scikit-learn, Matplotlib, Scipy и др.
Анализ данных — Numpy, Pandas и др.
Вакансии, связанные с Python
Разработчик игр.
Веб-дизайнер.
Python-программист.
Full-stack разработчик.
Machine Learning Engineer.
Специалист в Data Science.
Аналитик данных.
DevOps инженер.
Разработка ПО и др.
Примеры Python-кода
В Python не используются фигурные скобки и точка с запятой, но используются отступы (пробелы) для определения блоков кода. Например:
1 2 3 4 5 6 |
def func(): стейтмент 1 стейтмент 2 ………………… ………………… стейтмент R |
Python против Java
В отличие от других языков программирования, Python предоставляет возможность выполнять операции с наименьшим количеством строк кода. Например, для выполнения первой программы всех новичков — «Hello, world!» — на языке Java потребуется 3 строки, тогда как в Python — всего 1 строка.
Программа «Hello, world!» на Java:
1 2 3 4 5 6 7 |
// Java class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } |
Программа «Hello, world!» на Python:
1 2 3 |
# Python print("Hello, world!") |
Результат выполнения обеих программ:
Функция print() в Python
Функция print() выводит заданный объект на стандартное устройство вывода (экран) или в файл текстового потока. В отличие от других языков программирования, функция print() в Python является наиболее уникальной и универсальной функцией.
Синтаксис функции print():
1 |
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) |
Рассмотрим детально:
objects — объекты для вывода. Символ *
означает, что может быть несколько объектов;
sep — разделитель значений для вывода. По умолчанию используется пробел ' '
;
end — выводится последним в стейтменте;
file — указываем куда выводить объект;
flush — поток или файл принудительно очищается, если значение параметра равно True
. По умолчанию установлено значение False
.
Пример Python-программы с использованием функции print():
1 2 3 4 5 6 7 8 9 |
print("Welcome to Ravesli!") a = 15 # В функции print() указаны два аргумента print("a =", a) b = a # В функции print указаны три аргумента print('a =', a, '= b') |
Результат:
Welcome to Ravesli!
a = 15
a = 15 = b
Сразу несколько объектов можно вывести с помощью функции print(). Для этого используется запятая (,
).
Получение пользовательского ввода в Python
Python предоставляет функцию input() для получения пользовательского ввода. Например:
1 2 |
name = input("Enter a name of student:") print("The student name is: ", name) |
Результат:
Enter a name of student: Anton
The student name is: Anton
По умолчанию функция input() принимает на вход строку, но можно указать и другие типы данных.
Например, для получения числа от пользователя, мы можем использовать:
1 2 3 4 5 |
a = int(input("Enter first number: ")) b = int(input("Enter second number: ")) # Выводим сумму двух чисел, указанных пользователем print(a+b) |
Результат:
Enter first number: 20
Enter second number: 30
50