Python это язык программирования высокого уровня, который был создан в далеком 1991 году Гвидо Ван Россумом. Название язык получил в честь Монти Пайтона и комедийного сериала "Летающий цирк Монти Пайтона". История развития языка довольно интересна, прочитать о ней можно в блоге Гвидо Ван Россума:
Хороший инженер должен уметь правильно выбирать подходящие инструменты для решения поставленных задач. В этом ему должны помогать знания о функциональности, предоставляемой тем или иным инструментом, а также о его достоинствах и недостатках. В данном разделе приведены основные причины того, почему Python является подходящим языком программирования для начала погружения в область программирования, а также о его основных достоинствах.
Одним из достоинств Python, склоняющих чашу весов в пользу выбора в качестве первого языка программирования, является низкий порог вхождения. Минималистичный синтаксис и использование упрощенного английского, пришедший из языка ABC, сильно упрощает изучение. Кроме этого, Python нацелен на улучшение читаемости кода и увеличение производительности разработчика. Разрабатывая Python, Гвидо Ван Россум закладывал эти принципы как одни из основных.
Широкое распространение и большая популярность -- это еще одна причина выбора Python. Python -- это язык общего назначения. Это означает, что его можно использовать для решения любых задач, начиная от автоматизации рутинных процессов и системного администрирования заканчивая разработкой веб-приложений, компьютерных игр и научных исследований. Высокая универсальность Python подтверждается его использованием различными компаниями в своих продуктах. Например, Spotify использует Python в системе рекомендаций песен; в Google Python является официальным языком программирования; CCP Games использует одну из реализаций Python для своей игры EVE Online; Wargaming использует Python и C++ в своих играх. Несомненно, широкое распространение Python делает его востребованным на рынке труда. Вот несколько последних опросов разработчиков:
- Stack Overflow Developer Survey 2019.
- Python Developers Survey 2019;
- Средняя заработная Python разработчика (по данным indeed).
Python -- это интерпретируемый язык программирования, что положительно сказывается на скорости разработки. Программу, написанную на Python, можно отредактировать и запустить в любой момент без необходимости компилировать в исполняемый файл. Использования интерпретатора позволяет Python быть кроссплатформенным. Программу можно с легкостью перенести на другую платформу с минимальными изменениями.
Интерпретатор Python поставляется сразу с широким набором готовых модулей, которые объединены в стандартную библиотеку и позволяют решать самые разные задачи. Например, с Python поставляются модули, реализующие разные структуры данных, средства обработки текста, создания пользовательского интерфейса, работы с операционными системами и сетью. Эти модули в шутку называют батарейками. Зачатую, когда необходимо написать какую-либо функцию, прежде всего необходимо поискать ее в стандартной библиотеке. С большой долей вероятности она уже реализована другими людьми. Даже если чего-то нет в стандартной библиотеке Python обладает удобными средствами установки сторонних библиотек, коих великое множество. Просмотреть список доступных "из коробки" модулей можно здесь.
Исходный код интерпретатора Python и его стандартной библиотеки является открытым и выложен на GitHub. Он распространяется под свободной лицензией с возможностью использования в коммерческих проектах. Большое количество сторонних библиотек используют похожую политику в отношении открытости.
За все время существования Python обзавелся большим комьюнити, которое постоянно вносит предложения по улучшению языка, называемые PEP. Любое изменение, вносимое в язык, обсуждается сообществом и только после этого принимается решение о том добавить его или отвергнуть. Это способствует активному развитию Python.
Несмотря на все достоинства, перечисленные в предыдущем пункте, Python имеет ряд недостатков, как и любой другой инструмент. Эти недостатки необходимо учитывать при решении какой-либо задачи.
Один из основных недостатков заключается в скорости работы. Не секрет, что
интерпретируемые языки выполняются медленнее, чем компилируемые. Таким образом,
Python может уступать с точки зрения времени работы другим языкам. Однако,
эталонная реализация Python -- CPython и почти стандартная библиотека
реализованы на Си, что позволяет достигать достаточно высокой скорости работы.
Кроме этого, существуют сторонние библиотеки, специализированные на сложных
вычислениях, например NumPy
, использование которых позволяет достичь скорости
исполнения кода сравнимой с чистым Си. Другим вариантом ускорения программы
может быть реализация узких мест на других языках, например на C/C++. Python
позволяет достаточно просто интегрировать его и части программы, написанные на
других языках программирования. Обратное тоже верно. Так существуют другие
реализации Python, позволяющие легко встраивать в Java (JPython),
.NET (IronPython).
Помимо времени работы, за хорошую читаемость и высокую скорость разработки приходится платить чуть более высоким потреблением памяти. Одним из методов избежать использования большого количества памяти является использование правильных типов и структур данных.
Динамическая типизация Python также может показаться сложной для новичков.
Python не требует явно указывать тип переменных, что может приводить к частым
ошибкам выполнения, особенно у начинающих. Для Исправления этого недостатка
существуют дополнительные инструменты, такие как модуль typing
и библиотека
mypy
, позволяющие оставлять подсказки о типах переменных и проверять их на
корректность. Хоть это не учитывается самим интерпретатором, это существенно
повышает читаемость кода.
Хоть Python и является языком общего назначения, это далеко не значит, что его
стоит применять для реализации любых приложений. Несмотря на существование
библиотек для фронтенд разработки (например, Brython
или Pyodide
), Python
слабо применяется в этой области. Использование Python в браузере с помощью
этих библиотек все равно требует существенных знаний JavaScript для работы с
веб-страницей, а также он может уступать в производительности
специализированным инструментам.
Помимо работы на стороне браузера, Python не часто используется в мобильной
разработке, хотя для него также разработаны специальные библиотеки
(например, Kivy
). Таким образом не стоит применять Python для всего. Решение
конкретной задачи всегда требует выбора наиболее подходящей технологии.
Не стоит полягаться на конкретный инструмент.
Помимо упомянутых ранее принципов, Гвидо Ван Россум вложил в Python и другие основополагающие идеи. О философских принципах, которых придерживается Python, можно прочитать здесь.
Свод основных принципов, которых желательно придерживаться при написании своего кода на Python изложен в PEP 20 под названием "Дзен Python".
Обеспечение высокой читаемости кода, помимо лаконичного синтаксиса, достигается за счет существования единого стандарта кодирования. Этот стандарт называется PEP 8, по названию документа в котором он был заложен. Наличие единого стилистического стандарта позволяет привести код разных разработчиков к единому стилю.
Примеры курса выполнены в блокнотах Jupyter, содержащих блоки кода и
поясняющего текста. Используйте их как руководство, выполняя и модифицируя
примеры в терминале. Блоки с текстом поясняют происходящее в коде или содержат
теоретический материал. Некоторые примеры размещены в файлах с
расширением .py
, где используются комментарии для пояснения кода.
Для прохождения курса вам потребуется интерпретатор Python версии 3.9. Иногда он уже идет в комплекте с операционной системой. Проверить его наличие можно, выполнив в терминале следующие команды:
$ python --version
Python 3.9.0
Если у вас не установлен интерпретатор, потребуется и установить его с официального сайта. Инструкцию по установке можно найти на официальном сайте (ссылка) или, например, здесь.
В случае отсутствия желания устанавливать какое-либо программное обеспечение, то можете развернуть рабочую среду в браузере repl.it без установки git и python на локальном компьютере.
Если вы хотите выполнять блокноты Jupyter самостоятельно, то его потребуется установить дополнительно, выполнив команды:
$ python -m pip install jupyter
Однако, это не обязательно.
Новичкам бывает сложно запомнить все требования стандарта PEP 8. Большие программы также проверять довольно трудно. Поэтому для проверки своего или чужого кода рекомендуется применять автоматизированные средства. Их называют линтерами и вот некоторые из них:
- pylint
- flake8
- pylama
- pycodestyle
- линтер PyCharm
- и другие
Для установки первых 4-х линтеров достаточно выполнить в терминале следующую
команду, указав наименование нужного линтера после команды install
:
$ python -m pip install pylint
Проверка файла с кодом осуществляется следующей командой:
$ python -m pylint file_name.py
В этом репозитории в корневой директории вы найдете модифицированный
файл конфигурации .pylintrc
для более строгой проверки своего
кода. Для этого нужно немного изменить команду выше:
$ python -m pylint --rcfile=.pylintrc file_name.py
Запустить интерпретатор Python в терминале командной строки можно выполнив команду:
$ python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Изменение приглашения ко вводу на значок >>>
означает, что интерпретатор
Python успешно запущен.
Теперь вы можете вводить любые Python выражения:
>>> print('Hello, World!')
Hello, World!
- 📚 Блог Гвидо Ван Россума о истории Python
- 📚 Блог о Python Гвидо Ван Россума о Python
- 📚 Блог о MyPy Гвидо Ван Россума о проекте MyPy
- 📚 Блоги Гвидо Ван Россума
Репозиторий Гвидо Ван Россума
- 📋 Дзен Python
- 📝 PEP 8
- 🐍 python.org