sonyps4.ru

Уроки программирования на python для начинающих. Программирование на Python: от новичка до профессионала

27 августа 2012 в 15:18

Учим Python качественно

  • Python

Здравствуйте всем!

Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП) , мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
Для начала окунёмся в возможности и узнаем, что же умеет Python?

А зачем мне твой Python?

Много начинающих программистов задают подобные вопросы. Это как с покупкой телефона, скажите, почему я должен купить этот телефон, а не этот?
Качество программного обеспечения
Для многих, в том числе и для меня, основные преимущества - это удобочитаемый синтаксис. Не много языков могут похвастаться им. Программный код на Python читается легче, что значит, многократное его использование и обслуживание выполняется гораздо проще, чем использование программного кода на других языках сценариев. Python содержит самые современные механизмы многократного использования программного кода, каким является ООП .
Библиотеки поддержки
В составе Python поставляется большое число собранных и переносимых функциональных возможностей, известных как стандартная библиотека. Эта библиотека предоставляет Вам массу возможностей, востребованных в прикладных программах, начиная от поиска текста по шаблону и заканчивая сетевыми функциями. Python допускает расширение как за счёт ваших собственных библиотек, так и за счёт библиотек, созданных другими разработчиками.
Переносимость программ
Большая часть программ на языке Python выполняется без изменений на всех основных платформах. Перенос программного кода из Linux в Windows заключается в простом копировании файлов программ с одной машины на другую. Также Python предоставляет Вам массу возможностей по созданию переносимых графических интерфейсов .
Скорость разработки
По сравнению с компилирующим, или строго типизированными языками, такими как С, С++ или Java, Python во много раз повышает производительность труда разработчика. Объем программного кода на языке Python обычно составляет треть, или даже пятую часть эквивалентного программного кода на языке С++ или Java, что означает меньший объем ввода с клавиатуры, меньшее количество времени на откладку и меньший объем трудозатрат на сопровождение. Кроме того, программы на языке Python запускаются сразу же, минуя длительные этапы компиляции и связывания, необходимые в некоторых других языках программирования, что еще больше увеличивает производительность труда программиста.

Где используется Python?

  • Компания Google использует Python в своей поисковой системе и оплачивает труд создателя Python - Гвидо ван Россума
  • Такие компании, как Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm и IBM, используют Python для тестирования аппаратного обеспечения
  • Служба коллективного использования видеоматериалов YouTube в значительной степени реализована на Python
  • NSA использует Python для шифрования и анализа разведданных
  • Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python для прогнозирования финансового рынка
  • Популярная программа BitTorrent для обмена файлами в пиринговых сетях написана на языке Python
  • Популярный веб-фреймворк App Engine от компании Google использует Python в качестве прикладного языка программирования
  • NASA, Los Alamos, JPL и Fermilab используют Python для научных вычислений.
и другие компании также используют этот язык.

Литература

Вот мы и познакомились поближе с языком программирования Python. Можно сказать отдельно, что плюсы Python состоят еще в том, что у него есть масса качественной литературы. Не каждый язык этим может похвастаться. К примеру язык программирования JavaScript не может порадовать пользователей множеством литературы, хотя язык действительно неплохой.

Вот источники, которые помогут Вам познакомиться ближе с Python, а может и стать будущим Гвидо ван Россумом.
* Некоторые источники могут быть на английском. Не стоит этому удивляться, сейчас масса отличной литературы пишется именно на английском языке. Да и для самого программирования надо знать хотя бы базовые знания английского.

Настоятельно рекомендую прочитать первым делом книгу - Марк Лутц. Изучаем Python, 4-е издание . Книга переведена на русский язык, так что бояться не стоит, если Вы вдруг не знаете английский. Но именно четвёртое издание.

Для тех, кто знает английский, можно прочитать документацию на официальном сайте Python . Там всё довольно понятно описано.

А если же Вы более принимаете информацию по видео, то могу посоветовать уроки от компании Google, которые ведёт Ник Парланте - ученик из Стэнфорда. Шесть видеолекций на YouTube . Но в бочке мёда тут есть капля дёгтя… Ведёт он на английском языке с английскими субтитрами. Но надеюсь, что остановит это немногих.

Что делать, если я прочитал книги, но не знаю как применять знания?

Без паники!
Советую почитать книгу Марк Лутц. Программирование на Python (4-е издание) . Ранее было «изучаем», а тут «Программирование». В «Изучаем» - Вы получаете знания Python, в «Программирование» - Марк Вас учит как их применять в Ваши будущие программы. Книга очень полезная. И думаю одной её Вам хватит.

Хочу практики!

Легко.
Выше я писал о видеолекциях от Ника Парланте на YouTube, но у них есть также некие

Программирование на Python

Часть 1. Возможности языка и основы синтаксиса

Серия контента:

Стоит ли изучать Python?

Python – это один из наиболее популярных современных языков программирования. Он пригоден для решения разнообразных задач и предлагает те же возможности, что и другие языки программирования: динамичность, поддержку ООП и кросс-платформенность. Разработку Python начал Гвидо Ван Россум (Guido Van Rossum) еще в середине 1990-х годов, поэтому к настоящему времени удалось избавиться от стандартных «детских» болезней, существенно развить лучшие стороны языка и привлечь множество программистов, использующих Python для реализации своих проектов.

Многие программисты считают, что необходимо изучать только «классические» языки программирования, такие как Java или C++, так как другие языки все равно не смогут обеспечить таких же возможностей. Однако в последнее время возникло убеждение, что программисту желательно знать более одного языка, так как это расширяет его кругозор, позволяя более творчески решать поставленные задачи и повышая его конкурентоспособность на рынке труда.

Изучить в совершенстве два таких языка как Java и C++ достаточно сложно и заняло бы много времени; кроме того, многие аспекты этих языков противоречат друг другу. В то же время Python идеально подходит на роль второго языка, так как он сразу же усваивается благодаря уже имеющимся знаниям в ООП, и тому, что его возможности не конфликтуют, а дополняют опыт, накопленный при работе с другим языком программирования.

Если же программист только начинает свой путь в области разработки ПО, то Python станет идеальным «вводным» языком программирования. Благодаря своей лаконичности он позволит быстрее овладеть синтаксисом языка, а отсутствие «наследства» в виде формировавшихся на протяжении многих лет аксиом поможет быстро освоить ООП. В силу этих факторов «кривая обучения» Python будет довольно короткой, и программист сможет перейти от учебных примеров к коммерческим проектам.

Поэтому кем бы ни являлся читатель данной статьи – опытным программистом или новичком в области разработки ПО, ответом на вопрос, который является и названием этого раздела, должно стать убедительное «да».

Этот цикл статей предназначен для того, чтобы помочь успешному преодолению «кривой обучения», последовательно предоставляя информацию, начиная с самых базовых принципов языка до его продвинутых возможностей в плане интеграции с другими технологиями. В первой статье речь пойдет об основных возможностях и синтаксисе Python. В дальнейшем мы рассмотрим более сложные аспекты работы с этим популярным языком, в частности объектно- ориентированное программирование на Python.

Архитектура Python

Любой язык, неважно – для программирования или общения, состоит как минимум из двух частей – словаря и синтаксиса. Язык Python организован точно так же, предоставляя синтаксис для формирования выражений, образующих исполняемые программы, и словарь – набор функциональности в виде стандартной библиотеки и подключаемых модулей.

Как уже упоминалось, синтаксис Python достаточно лаконичный, особенно если сравнивать с Java или C++. С одной стороны – это хорошо, так как чем проще синтаксис, тем проще его изучить и тем меньше ошибок можно совершить в процессе его использования. Однако у подобных языков есть недостаток – с их помощью можно передавать самую простую информацию и нельзя выражать сложные конструкции.

К Python это не относится, так как это язык простой, но упрощенный. Дело в том, что Python является языком с более высоким уровнем абстракции, выше, например, чем у Java и C++, и позволяет передать такое же количество информации в меньшем объеме исходного кода.

Также Python является языком общего назначения, поэтому может применяться практически в любой области разработки ПО (standalone, клиент-сервер, Web-приложения) и в любой предметной области. Кроме того, Python легко интегрируется с уже существующими компонентами, что позволяет внедрять Python в уже написанные приложения.

Другая составляющая успеха Python – это его модули расширения, как стандартные, так и специфические. Стандартные модули расширения Python – это отлично спроектированная и неоднократно проверенная функциональность для решения задач, возникающих в каждом проекте по разработке ПО, обработка строк и текстов, взаимодействие с операционной системой, поддержка Web-приложений. Эти модули также написаны на языке Python, поэтому обладают его важнейшим свойством – кросс-платформенностью, позволяющей безболезненно и быстро переносить проекты с одной операционной системы на другую.

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

Среда исполнения Python

Как известно, все кросс-платформенные языки программирования построены по одной модели: это действительно переносимый исходный код и среда исполнения (runtime environment), которая не является переносимой и специфична для каждой конкретной платформы. В эту среду исполнения обычно входит интерпретатор, который исполняет исходный код, и различные утилиты, необходимые для сопровождения приложения – отладчик, обратный ассемблер и т.д.

В среду исполнения Java дополнительно входит компилятор, так как исходный код необходимо скомпилировать в байт-код для виртуальной Java-машины. В среду исполнения Python входит только интерпретатор, который одновременно является и компилятором, однако компилирует исходный код Python непосредственно в машинный код целевой платформы.

На данный момент существуют три известных реализации среды исполнения для Python: CPython, Jython и Python.NET. Как можно догадаться из названия, первая среда реализована на языке C, вторая на языке Java, а последняя – на платформе.NET.

Среда исполнения CPython обычно называется просто Python, и когда говорят о Python, то чаще всего имеется в виду именно эта реализация. Эта реализация состоит из интерпретатора и модулей расширения, написанных на языке C, и может использоваться на любой платформе, для которой доступен стандартный компилятор C. Кроме того, существуют уже скомпилированные версии среды исполнения для различных операционных систем, включая различные версии OC Windows и различные дистрибутивы Linux. В этой и последующих статьях будет рассматриваться именно CPython, если иное не оговаривается отдельно.

Среда исполнения Jython – это реализация Python для работы с виртуальной Java-машиной (JVM). Поддерживается любая версия JVM, начиная с версии 1.2.2 (текущая версия Java – 1.6). Для работы с Jython требуется установленная Java-машина (среда исполнения Java) и определенное знание языка программирования Java. Уметь писать исходный код на языке Java не обязательно, однако придется иметь дело c JAR-файлами и Java-апплетами, а также документацией в формате JavaDOC.

Какую версию среды выбрать – зависит исключительно от предпочтений программиста, вообще же рекомендуется держать на компьютере и CPython, и Jython, так как они не конфликтуют между собой, а взаимно дополняют друг друга. Среда CPython работает быстрее, так как нет промежуточного уровня в виде JVM; кроме того, обновленные версии Python сначала выпускают именно в виде среды CPython. Однако Jython может использовать любой класс Java в качестве модуля расширения и работать на любой платформе, для которой существует реализация JVM.

Обе среды исполнения выпущены под лицензией, совместимой с известной лицензией GPL, поэтому могут использоваться для разработки как коммерческого, так и свободного или бесплатного ПО. Большая часть модулей расширения для Python также выходит в рамках лицензии GPL и может свободно применяться в любых проектах, однако существуют и коммерческие расширения или расширения с более строгими лицензиями. Поэтому при использовании Python в коммерческом проекте необходимо знать, какие ограничения существуют в лицензиях подключаемых модулей расширения.

Начало работы с Python

Прежде чем начать использовать Python, необходимо установить его среду исполнения – в данной статье это CPython и соответственно интерпретатор python. Существуют различные способы установки: опытные пользователи могут сами скомпилировать Python из его общедоступного исходного кода, также можно загрузить с Web-сайта www.python.org уже готовые исполняемые файлы для конкретной операционной системы, наконец, многие дистрибутивы Linux поставляются с уже предустановленным интерпретатором Python. В этой статье используется версия Python 2.x для ОС Windows, однако представленные примеры можно запускать на любой версии Python.

После того как программа установки развернет исполняемые файлы Python в указанный каталог, необходимо проверить значения следующих системных переменных:

  • PATH . В этой переменной должен содержаться путь к каталогу, где установлен Python, чтобы его могла найти операционная система.
  • PYTHONHOME . Эта переменная должна содержать только путь к каталогу, где установлен Python. Также в этом каталоге должен содержаться подкаталог lib, в котором будет выполняться поиск стандартных модулей Python.
  • PYTHONPATH . Переменная со списком каталогов, содержащих модули расширения, которые будут подключаться к Python (элементы списка должны разделяться системным разделителем).
  • PYTHONSTARTUP . Не обязательная переменная, определяющая путь к сценарию Python, который должен выполняться каждый раз при запуске интерактивного сеанса интерпретатора Python.

Командная строка для работы с интерпретатором имеет следующую структуру.

PYTHONHOME\python (опции) [ -с команда | файл со сценарием | - ] {аргументы}

Интерактивный режим работы Python

Если запустить интерпретатор, не указывая команды или файла со сценарием, то он запустится в интерактивном режиме. В этом режиме запускается специальная оболочка Python, в которую можно вводить отдельные команды или выражения, а их значение будет немедленно вычисляться. Это очень удобно во время изучения Python, так как можно сразу проверить правильность той или иной конструкции.

Значение вычисленного выражения сохраняется в специальную переменную с именем «Одиночное подчеркивание» (_), так что его можно использовать в последующих выражениях. Завершить интерактивный сеанс можно сочетанием клавиш Ctrl–Z в ОС Windows или Ctrl–D в ОС Linux.

Опции – это не обязательные строковые значения, которые могут изменять поведение интерпретатора во время сеанса; их значение будет рассматриваться в этой и последующих статьях. За опциями указывается либо отдельная команда, которую должен выполнить интерпретатор, либо путь к файлу, в котором содержится сценарий для выполнения. Стоит отметить, что команда может состоять из нескольких выражений, разделенных точкой с запятой, и должна быть заключена в кавычки, чтобы операционная система смогла ее корректно передать интерпретатору. Аргументы – те параметры, которые передаются для последующей обработки в исполняемый сценарий; они передаются в программу в виде строк и разделяются пробелами.

Для проверки правильности установки и работоспособности Python можно выполнить следующие команды:

c:\> python- v
c:\> python –c “import time; print time.asctime()”

Опция –v выводит версию используемой реализации Python и завершает работы, а вторая команда распечатывает на экран значение системного времени.

Писать сценарии Python можно в любом текстовом редакторе, так как они представляют собой обычные текстовые файлы, однако существуют и специальные среды разработки, предназначенные для работы с Python.

Основы синтаксиса Python

Сценарии исходного кода Python состоят из так называемых логических строк , каждая из которых в свою очередь состоит из физических строк . Для обозначения комментариев используется символ #. Комментарии и пустые строки интерпретатор игнорирует.

Далее приведен очень важный аспект, который может показаться странным программистам, изучающим Python в качестве второго языка программирования. Дело в том, что в Python нет символа, который бы отвечал за отделение выражений друг от друга в исходном коде, как, например, точка с запятой (;) в C++ или Java. Точка с запятой позволяет разделить несколько инструкций, если они находятся на одной физической строке. Также отсутствует такая конструкция, как фигурные скобки {}, позволяющая объединить группу инструкций в единый блок.

Физические строки разделяются самим символом конца строки, но если выражение слишком длинное для одной строки, то две физических строки можно объединить в одну логическую. Для этого необходимо в конце первой строки ввести символ обратного слеша (\), и тогда следующую строку интерпретатор будет трактовать как продолжение первой, однако при этом нельзя, чтобы на первой строке за символом \ находились бы другие символы, например, комментарий с #. Для выделения блоков кода используются исключительно отступы. Логические строки с одинаковым размером отступа формируют блок, и заканчивается блок в том случае, когда появляется логическая строка с отступом меньшего размера. Именно поэтому первая строка в сценарии Python не должна иметь отступа. Усвоение этих несложных правил поможет избежать большинства ошибок, связанных с освоением нового языка.

Других радикальных отличий от других языков программирования в синтаксисе Python нет. Имеется стандартный набор операторов и ключевых слов, большая часть которых уже знакома программистам, а специфические для Python будут рассматриваться в этой и последующих статьях. Также используются стандартные правила для заданий идентификаторов переменных, методов и классов – имя должно начинаться с подчеркивания или латинского символа любого регистра и не может содержать символов @, $, %. Также не может использоваться в качестве идентификатора только один символ подчеркивания (см. сноску, в которой говорится об интерактивном режиме работы).

Типы данных, используемых в Python

Типы данных, используемых в Python, также совпадают с другими языками – целые и вещественные типы данных; дополнительно поддерживается комплексный тип данных – с вещественной и мнимой частью (пример такого числа – 1.5J или 2j, где J представляет собой квадратный корень из -1). Python поддерживает строки, которые могут быть заключены в одинарные, двойные или тройные кавычки, при этом строки, как и в Java, являются immutable-объектами, т.е. не могут изменять свое значение после создания.

Есть в Python и логический тип данных bool c двумя вариантами значения – True и False. Однако в старых версиях Python такого типа данных не было, и, кроме того, любой тип данных мог быть приведен к логическому значению True или False. Все числа, отличные от нуля, и непустые строки или коллекции с данными трактовались как True, а пустые и нулевые значения рассматривались как False. Эта возможность сохранилась и в новых версиях Python, однако для повышения читаемости кода рекомендуется использовать для логических переменных тип bool. В то же время, если необходимо поддерживать обратную совместимость со старыми реализациями Python, то в качестве логических переменных стоит использовать 1 (True) или 0 (False).

Функциональность для работы с наборами данных

В Python определены три типа коллекций для хранения наборов данных:

  • кортеж (tuple);
  • список (list);
  • словарь (dictionary).

Кортеж представляет собой неизменяемую упорядоченную последовательность данных. В нем могут содержаться элементы различных типов, например другие кортежи. Кортеж определяется в круглых скобках, а его элементы разделяются запятыми. Специальная встроенная функция tuple() позволяет создавать кортежи из представленной последовательности данных.

Список – это изменяемая упорядоченная последовательность элементов. Элементы списка также разделяются запятыми, но задаются уже в квадратных скобках. Для создания списков предлагается функция list().

Словарь является хеш-таблицей, сохраняющей элемент вместе с его идентификатором-ключом. Последующий доступ к элементам выполняется тоже по ключу, поэтому единица хранения в словаре – это пара объект-ключ и связанный с ним объект-значение. Словарь – это изменяемая, но не упорядоченная коллекция, так что порядок элементов в словаре может меняться со временем. Задается словарь в фигурных скобках, ключ отделяется от значения двоеточием, а сами пары ключ/значение разделяются запятыми. Для создания словарей доступна функция dict().

В листинге 1 приведены примеры различных коллекций, доступных в Python.

Листинг 1. Виды коллекций, доступные в Python
(‘w’,‘o’,‘r’,‘l’,‘d’) # кортеж из пяти элементов (2.62,) # кортеж из одного элемента [“test”,"me"] # список из двух элементов # пустой список { 5:‘a’, 6:‘b’, 7:‘c’ } # словарь из трех элементов с ключами типа int

Определение функций в Python

Хотя Python поддерживает ООП, однако многие его возможности реализованы в виде отдельных функций; кроме того, модули расширения чаще всего делаются тоже в виде библиотеки функций. Функции также применяются и в классах, где они по традиции называются методами.

Синтаксис определения функций в Python крайне простой; с учетом изложенных выше требований:

def ИМЯ_ФУНКЦИИ(параметры): выражение № 1 выражение № 2 ...

Как видно, необходимо использовать служебное слово def, двоеточие и отступы. Вызвать функцию также очень просто:

ИМЯ_ФУНКЦИИ(параметры)

Есть только несколько моментов, специфичных для Python, которые стоит учитывать. Как и в Java, примитивные значения передаются по значению (в функцию попадает копия параметра, и она не может изменить значение, установленное до вызова функции), а сложные объектные типы передаются по ссылке (в функцию передается ссылка и она вполне может изменить объект).

Параметры могут передаваться как просто по порядку перечисления, так и по именам, в этом случае не нужно указывать при вызове те параметры, для которых есть значения по умолчанию, а передавать только обязательные или менять порядок параметров при вызове функции:

#функция, выполняющая деление нацело – с помощью оператора // def foo(delimoe, delitel): return delimoe // delitel print divide(50,5) # результат работы: 10 print divide(delitel=5, delimoe=50) # результат работы: 10

Функция в Python обязательно возвращает значение – это делается либо явно с помощью оператора return, за которым следует возвращаемое значение, либо, в случае отсутствия оператора return, возвращается константа None, когда достигается конец функции. Как видно из примеров объявлений функций, в Python нет необходимости указывать, возвращается что-либо из функции или нет, однако если в функции имеется один оператор return, возвращающей значение, то и другие операторы return в этой функции должны возвращать значения, а если такого значения нет, то необходимо явно прописывать return None.

Если функция очень простая и состоит из одной строки, то ее можно определить прямо на месте использования, в Python подобная конструкция называется лямбда-функцией (lambda). lambda-функция – это анонимная функция (без собственного имени), телом которой является оператор return, возвращающий значение некоторого выражения. Такой подход может оказаться удобным в некоторых ситуациях, однако стоит заметить, что повторное использование подобных функций невозможно («где родился, там и пригодился»).

Еще стоит описать отношение Python к использованию рекурсии. По умолчанию глубина рекурсии ограничена 1000 уровней, и когда этот уровень будет пройден, возникнет исключительная ситуация, и работа программы будет остановлена. Однако при необходимости величину этого предела можно изменить.

У функций в Python есть еще и другие интересные особенности, например документирование или возможность определения вложенных функций, однако они будут рассматриваться в следующих статьях серии на более сложных примерах.

Python является широко используемым, высокоуровневым языком программирования, который был назван в честь знаменитого британского комедийного телешоу «Летающий цирк Монти Пайтона ». Язык Python простой по своей структуре, и в то же время невероятно гибкий и мощный. Учитывая, что код Python легко читаемый и без излишней строгости в синтаксисе, многие считают, что он является лучшим вводным языком программирования.

Python — описание языка, которое дали в Foundation описывает Python :

Python – это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает в себя модули, исключения, динамическую типизацию, высокоуровневые динамические типы данных и классы. Python сочетает в себе отличную производительность с понятным синтаксисом. В нем реализованы интерфейсы ко многим системным вызовам и библиотекам, а также различным оконным системам и он расширяем с помощью C и C++. Python используется как язык расширения для приложений, которым нужен программный интерфейс. И наконец, Python — это кроссплатформенный язык: он работает на многих версиях Unix, на Mac и на компьютерах под управлением MS-DOS, Windows, Windows NT и OS/2.

Какой язык программирования изучить первым?

Можно начать изучение с Python языка программирования. Чтобы проиллюстрировать, чем Python отличается от других вводных языков, вспомните время, когда вы были подростком.

Изучение программирования с помощью Python подобно вождению родительского минивэна. Как только вы сделаете на нем несколько кругов по парковке, вы начнете понимать, как управлять автомобилем.

Пытаться изучить программирование с помощью C (или даже ассемблера ) это как, учиться водить, собирая минивэн ваших родителей. Вы застрянете в гараже на несколько лет, компонуя части вместе, и когда у вас появится полное понимание того, как работает машина, и будете способны выявлять неисправности и прогнозировать будущие проблемы, вы уже перегорите, прежде чем когда-либо сядете за руль.

Преимущества Python

Язык Python для начинающих универсален. Вы можете автоматизировать рабочие процессы, создавать сайты, а также настольные приложения и игры с помощью Python . К слову, спрос на разработчиков Python (PostgreSQL, OOP, Flask, Django ) резко вырос за последние несколько лет в таких компаниях, как Instagram , Reddit , Tumblr , YouTube и Pinterest .

Высокоуровневый язык общего назначения

Python относится к высокоуровневым языкам программирования. Используя его, вы сможете создавать практически любые типы программного обеспечения. Эта универсальность поддерживает ваш интерес, так как вы разрабатываете программы и решения, ориентированные на ваши интересы, а не застреваете в дебрях языка, беспокоясь о его синтаксисе.

Интерпретируемый язык

Язык программирования Python для начинающих является интерпретируемым, а это значит, что вам не нужно знать, как компилировать код. Поскольку этап компиляции отсутствует, возрастает производительность, а время для редактирования, тестирования и отладки в значительной мере уменьшается. Просто скачайте интегрированную среду разработки (IDE ), напишите свой код и нажмите «Выполнить » (Run ).

Читаемость кода является ключевым моментом

Простой, легкий в изучении синтаксис Python делает упор на читаемость и задает хороший стиль программирования. С Python вы можете выразить свою концепцию меньшим количеством строк кода. Этот язык также заставляет вас обдумывать логику программы и алгоритмы. В связи с этим он часто используется как скриптовый или интегрирующий язык (glue language ), чтобы связать существующие компоненты вместе и писать большие объемы легко читаемого и работоспособного кода в короткие промежутки времени.

Это просто весело

Нельзя назвать язык программирования в честь Монти Пайтона , не имея чувства юмора. Более того, было проведено тестирование для сравнения времени, необходимого для написания простого скрипта на различных языках (Python, Java, C, J, BASIC ):

…Python требует меньше времени, меньше строк кода и меньше концептов, чтобы достичь поставленной цели… И в довершение всего, программирование на Python это весело! Веселье и частый успех порождает уверенность и интерес у студентов, которые становятся лучше подготовленными к дальнейшему изучению языка Python.

Перевод статьи «Why Learn Python? » был подготовлен дружной командой проекта .

Хорошо Плохо

Перейдем к теоретически-практической части и начнем с того что из себя представляет интерпретатор.

Интерпретатор

Интерпретатор - это такая программа, которая выполняет другие программы. Когда вы пишете программу на языке Python, интерпретатор читает вашу программу и выполняет содержащиеся в ней инструкции. В действительности, интерпретатор - это слой программной логики между вашим программным кодом и аппаратурой вашего компьютера.

В зависимости от используемой версии Python сам интерпретатор может быть реализован как программа на языке C, как набор классов Java и в каком-либо другом виде, но об этом позже.

Запуск сценария в консоли

Давайте запустите в консоле интерпретатор:

Теперь он ожидает ввода комманд, введите туда следующую инструкцию:

Print "hello world!"

ура, наша первая программа! :D

Запуск сценария из файла

Создайте файл "test.py", с содержимым:

# вывести "hello world" print "hello world" # вывести 2 в 10 степени print 2 ** 10

и выполните этот файл:

# python /path/to/test.py

Динамическая компиляция и байт-код

После того, как запустите сценарий, сначала компилирует исходный текст сценария в байт-код для виртуальной машины. Компиляция - это просто этап перевода, а байт-код это низкоуровневое платформонезависимое представление исходного текста программы. Python транслирует каждую инструкцию в исходном коде сценария в группы инструкций байт-кода для повышения скорости выполнения программы, так как байт-код выполняется намного быстрее. После компиляции в байт-код, создается файл с расширением ".pyc" по соседству с исходным текстом сценария.

В следующий раз, когда вы запустите свою программу интерпретатор минует этап компиляции и отдаст на выполнение откомпилированный файл с расширением ".pyc". Однако, если вы изменили исходные тексты вашей программы, то снова произойдет этап компиляции в байт-код, так как Python автоматически следит за датой изменения файла с исходным кодом.

Если Python окажется не в состоянии записать файл с байт-кодом, например из-за отсутствия прав на запись на диск, то программа не пострадает, просто байт-код будет собран в памяти и при завершении программы оттуда удален.

Виртуальная машина Python (PVM)

После того как пройдет процесс компиляции, байт-код передается механизму под названием виртуальная машина , которая и выполнит инструкции из байт-кода. Виртуальная машина - это механизм времени выполнения, она всегда присутствует в составе системы Python и это крайняя составляющая системы под названием "Интерпретатор Python".

Для закрепления пройденного еще раз проясним ситуацию, компиляция в байт-код производится автоматически, а PVM - это всего лишь часть системы Python, которую вы установили вместе с интерпретатором и компилятором. Все происходит прозрачно для программиста, и вам не надо выполнять эти операции вручную.

Производительность

Программисты имеющие опыт работы с такими языками как C и C++, могут заметить некоторые отличия в модели выполнения Python. Первое - это отсутствие этапа сборки или вызова утилиты "make", программы на Python могут быть сразу же запущены после написания исходного кода. Второе отличие - байт-код не является двоичным машинным кодом (например инструкции для микропроцессора Intel), он является внутренним представлением программы на языке Python.

По этим причинам программы на Python не могут выполняться также быстро как на C/C++. Обход инструкций выполняет виртуальная система, а не микропроцессор, и чтобы выполнить байт-код, необходима дополнительная интерпретация, инструкции которой требуют большего времени, чем машинные инструкции микропроцессора.

Однако, с другой стороны, в отличии от традиционных интерпретаторов, например как в PHP, здесь присутствует дополнительный этап компиляции - интерпретатору не требуется каждый раз анализировать исходный текст программы.

В итоге, Python по производительности находится между традиционными компилирующими и традиционными интерпретирующими языками программирования.

Альтернативные реализации Python

То что было сказано выше о компиляторе и виртуальной машине, характерно для стандартной реализации Python, так называемой CPython (реализации на ANSI C). Однако также существует альтернативные реализации, такие как Jython и IronPython, о которых пойдет сейчас речь.

Это стандартная и оригинальная реализация Python, названа так, потому что написана на ANSI C. Именно ее мы установили, когда выбрали пакет ActivePython или установили из FreeBSD портов. Поскольку это эталонная реализация, она как правило работает быстрее, устойчивее и лучше , чем альтернативные реализации.

Jython

Первоначальное название JPython, основная цель - тесная интеграция с языком программирования Java . Реализация Jython состоит из Java-классов, которые выполняют компиляцию программного кода на языке Python в байт-код Java и затем передают полученный байт-код виртуальной машине Java (JVM) .

Цель Jython состоит в том, чтобы позволить программам на языке Python управлять Java-приложениями, точно также как CPython может управлять компонентами на языках C/C++. Эта реализация имеет беcшовную интеграцию с Java. Поскольку программный код на Python транслируется в байт-код Java, во время выполнения он ведет себя точно также, как настоящая программа на языке Java. Программы на Jython могут выступать в качестве апплетов и сервлетов, создавать графический интерфейс с использованием механизмов Java и т.д. Более того, Jython обеспечивает поддержку возможности импортировать и использовать Java-классы в программном коде Python.

Тем не менее, поскольку реализация Jython обеспечивает более низкую скорость выполнения и менее устойчива по сравнению с CPython, она представляет интерес скорее для разработчиков программ на языке Java, которым необходим язык сценариев в качестве интерфейса к Java-коду.

Реализация предназначена для обеспечения интеграции программ Python с приложениями, созданными для работы в среде Microsoft .NET Framework операционной системы Windows, а также в Mono - открытом эквиваленте для Linux. Платформа.NET и среда выполнения языка C# предназначены для обеспечения взаимодействия между программными объектами - независимо от используемого языка программирования, в духе более ранней модели COM компании Microsoft.

IronPython позволяет программам на языке Python играть роль как клиентских, так и серверных компонентов, доступных из других языков программирования.NET. Поскольку разработка ведется компанией Microsoft , от IronPython, помимо прочего, можно было бы ожидать существенной оптимизации производительности.

Средства оптимизации скорости выполнения

Существуют и другие реализации, включая динамический компилятор Psyco и транслятор Shedskin C++, которые пытаются оптимизировать основную модель выполнения.

Динамический компилятор Psyco

Система Psyco - это компонент, расширяющий модель выполнения байт-кода, что позволяет программам выполняться быстрее. Psyco является расширением PVM , которое собирает и использует информацию о типах, чтобы транслировать части байт-кода программы в истинный двоичный машинный код, который выполняется гораздо быстрее. Для такой трансляции не требуется вносить изменения в исходный код или производить дополнительную компиляцию в ходе разработки.

Во время выполнения программы, Psyco собирает информацию о типах объектов, и затем эта информация используется для генерации высокоэффективного машинного кода, оптимизированного для объектов этого типа. После этого произведенный машинный код заменяет соответствующие участки байт-кода, тем самым увеличивается скорость выполнения.

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

Psyco обеспечивает увеличение скорости от 2 до 100 раз, но обычно в 4 раза, при использовании немодифицированного интерпретатора Python. Единственный минус у Psyco, это то обстоятельство, что в настоящее время он способен генерировать машинный код только для архитектуры Intel x86 .

Psyco не идет в стандартной поставке, его надо скачать и установить отдельно. Еще есть проект PyPy , который представляет собой попытку переписать PVM с целью оптимизации кода как в Psyco , проект PyPy собирается поглотить в большей мере проект Psyco .

Транслятор Shedskin C++

Shedskin - это система, которая преобразует исходный код на языке Python в исходный код на языке C++, который затем может быть скомпилирован в машинный код. Кроме того, система реализует платформонезависемый подход к выполнению программного кода Python.

Фиксированные двоичные файлы (frozen binaries)

Иногда необходимо из своих программ на Python создавать самостоятельные исполняемые файлы. Это необходимо скорее для упаковки и распространения программ.

Фиксированные двоичные файлы объединяют в единый файл пакета байт-код программ, PVM и файлы поддержки, необходимые программам. В результате получается единственный исполняемый файл, например файл с расширение ".exe" для Windows.

На сегодняшний день существует три основных инструмента создания "frozen binaries":

  • py2exe - он может создавать автономные программы для Windows, использующие библиотеки Tkinter, PMW, wxPython и PyGTK для создания графического интерфейса, программы использующие программные средства создания игр PyGame, клиентские программы win32com и многие другие;
  • PyInstaller - напоминает py2exe, но также работает в Linux и UNIX и способен производить самоустанавливающиеся исполняемые файлы;
  • freeze - оригинальная версия.

Вам надо загружать эти инструменты отдельно от Python, они распространяются бесплатно.

Фиксированные двоичные файлы имеют немалый размер, ибо они содержат в себе PVM, но по современным меркам из все же нельзя назвать необычно большими. Так как интерпретатор Python встроен непосредственно в фиксированные двоичные файлы, его установка не является обязательным требованием для запуска программ на принимающей стороне.

Резюме

На сегодня всё, в следующей статье расскажу о стандартных типах данные в Python, ну и в последующих статьях рассмотрим каждый тип в отдельности, а также функции и операторы для работы с этими типами.

  • Цель 1 - помочь ссылками, материалами, тем, кто соберется изучать программирование и первым языком возьмет Python. Показать, что это не так сложно, как кажется.
  • Цель 2 - собрать в комментариях ссылки на полезные и интересные материалы по этой теме.

0. А получится ли у меня?

С самого начала я сомневался в том, что у меня получится сделать что-то большее чем Hello World. Мне казалось, что программирование это сверх сложно и сверх магия. К тому же есть работа, хобби, семья, что будет отвлекаться от полноценного изучения.

Зря боялся и вам не советую. Программирование наверное никогда не станет моей основной профессией, но это отличный способ творческой реализации. Это шахматы и Civilization в одном флаконе.

Все проще чем кажется и гораздо интереснее.

1. Литература

Марк Лутц “Программирование на Python” - его советуют читать на многих форумах и курсах. Мне он показался излишне подробным и нагруженным для новичка. Читать много, программировать мало. Гораздо полезнее его читать после овладевания Python минимума.

Марк Саммерфилд “Программирование на Python 3” - динамично, с отличными примерами и заданиями. Без излишнего углубления, которое только все усложняет в начале. Я рекомендую начать именно с этой книги, она поможет быстро вникнуть, не пугая сложностями.

Все остальные книги оказались мене полезными и информативными. Вообще, хорошую литературу по этой теме трудно просто так взять и купить в магазине или в цифровой версии.

2. Что читать в интернете

http://pythonworld.ru/ - простым и понятным языком рассказывается об азах языка, часто использовал, как шпаргалку.

Еще через два месяца я смог создать свое первое приложение на Django. Но главное, что теперь у меня достаточно знания для самостоятельного развития и обучения. Самое трудное - это добраться до этой точки.

Еще через месяц я подключился к двум проектам на GitHub и принимаю в них участие. Задачи решаю конечно пока простые, но взамен получаю советы и обучение.

Теги: обучение python, обучение программированию



Загрузка...