Осваиваем Python. Унция ноль. Введение.
Присоединяюсь к MaxElc, DarwinTenk и Devgru 🙂 Начинаю цикл статей посвященных Python. Сам я имею некоторый опыт обращения с PHP и Java. Но каждый раз, при относительном освоении какого-то инструмента — оставалось определённое неудовлетворение им, связанное с чем-то конкретным, и поиски продолжались. На сегодняшний день наиболее близко к идеалу в моих глазах стоит Python. Идеал недостижим — это понятно, посему и у Python есть недостатки. Прежде всего — это скорость выполнения, однако, эта проблема решаема несколькими путями и об этом мы обязательно поговорим чуть позднее.
Сам я начал осваивать Python буквально недавно. Начиная этот цикл статей — я преследую несколько целей. Во-первых, это дополнительная само мотивация + интерактивность, во-вторых, опыт. В-третьих, блуждая по просторам рунета — вижу, что Python куда менее популярен, чем в мире. Ситуацию надо исправлять 🙂
В соответствии с идеологией Python, а именно с тем, что одни из главных его козырей — это быстрота в освоении и скорость разработки, мы достаточно быстро, практически тезисно пронесёмся по основам синтаксиса и построения программ и перейдём к основной цели данного цикла — освоение django.
Итак, мы начинаем.
Архитектура
- CPython — стандартная реализация Python
- Jython — альтернативная реализация Python. Основная цель которой — бесшовная интеграция с платформой Java. Состоит из java-классов, которые транслируют программный код на языке Python в java байт-код, который затем запускается на виртуальной машине Java (JVM).
- IronPython — реализация Python предназначенная для интеграции с .NET платформой.
- Shedskin C++ — нетрадиционный подход к выполнению программ на языке Python. Цель — оптимизация скорости выполнения. Преобразует исходный код Python в исходный код C++, который затем может быть скомпилирован в машинный код.
- PyPy — реализация PVM на самом языке Python + JIT компилятор.
Варианты запуска программ
На хабре уже была написана хорошая инструкция для новичков, как быстро организовать рабочую среду для разработки на Python и django. Если вы уже проделали описанную в ней последовательность действий, то это означает, что на вашей машине уже установлен интерпретатор python. В большинстве Linux дистрибутивов он установлен по-умолчанию.
Вариант 1. Интерактивный режим
Для попадания в интерактивный режим необходимо ввести в командной строке команду python.
$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type «help», «copyright», «credits» or «license» for more information.
>>> print ‘Hello World!’
Hello World!
В интерактивном режиме инструкции выполняются построчно. Для того, чтобы выполнить блок кода, можно, к примеру, набрать в пустом текстовом файле следующие две команды:
str1 = ‘Hello World!’
str2 = » It’s my second script»
print ‘import has been done successfully’
И сохранить их в файле hi.py. Далее в командной строчке используя команду cd перейти в тот каталог, в котором вы сохранили файл и набрать команду python.
Для импорта инструкций можно использовать инструкцию import . Файлы в языке Python являются модулями, которые внутри себя содержат пространство имён. Импортируя модуль мы получаем доступ к пространству имён верхнего уровня.
$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type «help», «copyright», «credits» or «license» for more information.
>>> import hi
import has been done successfully
>>> print hi.str1+hi.str2
Hello World! It’s my second script
Используя в инструкции конструкцию вида: hi.str1, мы обращаемся к имени str1, определённом внутри модуля hi.
Строки, числа в языке Python — это тоже объекты. Здесь прослеживается наследование парадигмы берущей начало от языка SmallTalk «Всё — объекты». Однако, если мне не изменяет память там речь шла и о том, что операторы — тоже были объектами. В python оператор «+» — это перегруженный оператор для строк выполняющий конкатенацию.
Для импортирования конкретных имён можно использовать инструкцию from:
>>> from hi import str1
>>> print str1
Hello World!
После чего мы сможем обращаться к импортируемому имени непосредственно.
После внесения каких-то изменений в файл, для того чтобы изменения вступили в силу — необходимо перезагрузить модуль с помощью функции reload().
Для получения списка всех доступных имён модуля можно использовать функцию dir():
>>> dir(hi)
[‘__builtins__’, ‘__doc__’, ‘__file__’, ‘__name__’, ‘str1’, ‘str2’]
Вариант 2. Запуск из командной строки.
Запустить сценарий из командной строки можно следующим образом:
Так же сценарию можно передавать параметры командной строки. Доступ к ним из сценария можно получить, импортировав встроенный модуль sys. Изменим файл hi.py следующим образом:
import sys
print sys.argv
После чего вызовем его из команжной строки, передав несколько произвольных параметров:
$ python hi.py 1 2 3 ‘param-pam-pam’
[‘hi.py’, ‘1’, ‘2’, ‘3’, ‘param-pam-pam’]
В результате получим список, содержащий в себе переданные параметры. Список — это тоже конструкция языка Python. О списках речь пойдёт в следующих статьях.
Потоки ввода и вывода сценария можно перенаправлять с помощью средств командной оболочки, например так:
$ python hi.py 1 2 3 ‘param-pam-pam’ > text.txt
Вариант 3. IDE.
Интерактивный режим удобен в некоторых случаях, например, когда нужно поэкспериментировать с какой-то определённой инструкцией. Однако, постоянно работать в нём неудобно т.к. Нужно постоянно вспоминать про перезагрузку модулей.
Поэтому гораздо удобнее воспользоваться описанной выше процедурой настройки IDE и запускать программы из неё. Так же при разработке программ на Python вполне приемлем вариант написания кода в блокноте с подсветкой синтаксиса и запуском программы из консоли.
На сегодня всё. В следующих статьях мы перейдём непосредственно к изучению конструкций языка. Не сомневаюсь, отклики будут и я буду на них ориентироваться.
Спасибо за внимание!
Введение¶
Python — один из тех редких языков программирования, которые одновременно претендуют на звание простых и мощных. Вас приятно удивит то, как легко можно сосредоточиться на решении поставленной задачи, а не на синтаксисе и структуре языка, на котором вы программируете.
Официально Python представляют так:
Python — это простой в освоении и мощный язык программирования. Он предоставляет эффективные высокоуровневые структуры данных, а также простой, но эффективный подход к объектно-ориентированному программированию. Его элегантный синтаксис и динамическая типизация наряду с тем, что он является интерпретируемым, делают его идеальным языком для написания сценариев и быстрой разработки приложений в различных областях и на большинстве платформ.
В следующем разделе мы рассмотрим эти особенности более детально.
Гвидо ван Россум, создатель языка Python, назвал его так в честь телешоу на BBC под названием «Летающий цирк Монти Пайтона» 1 , а вовсе не потому, что он любит змей, убивающих животных обвиванием своего длинного тела вокруг них и задавливанием.
Особенности Python¶
Простой¶
Python — простой и минималистичный язык. Чтение хорошей программы на Python очень напоминает чтение английского текста, хотя и достаточно строгого! Такая псевдо-кодовая природа Python является одной из его самых сильных сторон. Она позволяет вам сосредоточиться на решении задачи, а не на самом языке.
Лёгкий в освоении¶
Как вы увидите, на Python чрезвычайно легко начать программировать. Python обладает исключительно простым синтаксисом, как уже отмечалось выше.
Свободный и открытый¶
Python — это пример свободного и открытого программного обеспечения — FLOSS (Free/Libré and Open Source Software). Проще говоря, вы имеете право свободно распространять копии этого программного обеспечения, читать его исходные тексты, вносить изменения, а также использовать его части в своих программах. В основе свободного ПО лежит идея сообщества, которое делится своими знаниями. Это одна из причин, по которым Python так хорош: он был создан и постоянно улучшается сообществом, которое просто хочет сделать его лучше.
Язык высокого уровня¶
При написании программы на Python вам никогда не придётся отвлекаться на такие низкоуровневые детали, как управление памятью, используемой вашей программой, и т. п.
Портируемый¶
Благодаря своей открытой природе, Python был портирован на много платформ (т.е. изменён таким образом, чтобы работать на них). Все ваши программы смогут запускаться на любой из этих платформ без каких-либо изменений, если только вы избегали использования системно-зависимых функций.
Python можно использовать в GNU/Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE и даже на PocketPC!
Вы можете даже использовать такую платформу, как Kivy для создания игр для iOS (iPhone, iPad) и Android.
Интерпретируемый¶
Это требует некоторого пояснения.
Программа, написанная на компилируемом языке программирования, как например, C или C++, преобразуется из исходного языка (т. е. C или C++) в язык, понятный компьютеру (бинарный код, т. е. нули и единицы) при помощи компилятора с применением разнообразных флагов и параметров. Когда вы запускаете такую программу, компоновщик/загрузчик копирует программу с диска в оперативную память и запускает её.
Python же, напротив, не требует компиляции в бинарный код. Программа просто выполняется из исходного текста. Python сам преобразует этот исходный текст в некоторую промежуточную форму, называемую байткодом, а затем переводит его на машинный язык и запускает. Всё это заметно облегчает использование Python, поскольку нет необходимости заботиться о компиляции программы, подключении и загрузке нужных библиотек и т. д. Вместе с тем, это делает программы на Python намного более переносимыми, так как достаточно их просто скопировать на другой компьютер, и они работают!
Объектно-ориентированный¶
Python поддерживает как процедурно-ориентированное, так и объектно-ориентированное программирование. В процедурно-ориентированных языках программы строятся на основе процедур или функций, которые представляют собой просто-напросто многократно используемые фрагменты программы. В объектно-ориентированных языках программирования программы строятся на основе объектов, объединяющих в себе данные и функционал. Python предоставляет простые, но мощные средства для ООП, особенно в сравнении с такими большими языками программирования, как C++ или Java.
Расширяемый¶
Если вам нужно, чтобы некоторая критическая часть программы работала очень быстро или вы вынуждены скрыть часть алгоритма, вы можете написать эту часть программы на C или C++, а затем вызывать её из программы на Python.
Встраиваемый¶
Python можно встраивать в программы на C/C++, чтобы предоставлять возможности написания сценариев их пользователям.
Обширные библиотеки¶
Стандартная библиотека Python просто огромна. Она может помочь в решении самых разнообразных задач, связанных с использованием регулярных выражений, генерированием документации, проверкой блоков кода, распараллеливанием процессов, базами данных, веб-браузерами, CGI, FTP, электронной почтой, XML, XML-RPC, HTML, WAV файлами, криптографией, GUI (графическим интерфейсом пользователя) и другими системно-зависимыми вещами. Помните, что всё это доступно абсолютно везде, где установлен Python. В этом заключается философия Python «Всё включено».
Кроме стандартной библиотеки, существует множество других высококачественных библиотек, которые можно найти в Каталоге пакетов Python
Python — очень увлекательный и мощный язык. Он имеет хорошее соотношение производительности и возможностей, что делает написание программ на нём одновременно интересным и лёгким.
Python 2 против 3¶
Если вас не интересует разница между Python 2 и Python 3, вы можете пропустить этот радел. Но в любом случае помните, какую версию вы используете.
В 2008 году эта книга была переписана для Python 3. Это была одна из первых книг, посвящённых Python 3. Однако, к сожалению, это привело к путанице среди пользователей, пытавшихся изучать Python 2 по версии книги для Python 3 и наоборот. Тем не менее, мир понемногу мигрирует на Python 3.
Так что да, в этой книге вы будете учиться программировать на Python 3, даже если в конечном счёте планируете использовать Python 2. Помните, что как только вы как следует усвоите и научитесь пользоваться любым из них, вы также сможете легко освоить разницу между ними и адаптироваться. Самое сложное заключается в обучении программированию и понятии основной части языка Python. Это и будет нашей целью в настоящей книге, а как только вы её достигнете, вы сможете запросто использовать Python 2 или Python 3 в зависимости от конкретной ситуации.
Изучить разницу между Python 2 и Python 3 в деталях можно на странице Ubuntu wiki, посвящённой Python 3.
Что говорят программисты¶
Интересно, что такие великие хакеры, как Эрик Рэймонд, говорят о Python:
- Эрик С. Рэймонд — автор работы «Собор и Базар», а также человек, который ввёл термин «Open Source». Он говорит, что Python стал его любимым языком программирования. Эта статья и вдохновила меня на пробу пера в Python.
- Брюс Экель — автор знаменитых книг «Думаем на Java» и «Думаем на С++». Он утверждает, что ни на одном языке программирования его работа не была столь эффективной, как на Python. Кроме того, он считает, что Python — это, пожалуй, единственный язык, стремящийся облегчить жизнь программисту. Подробнее можно прочитать в его полном интервью.
- Питер Норвиг — широко известный автор Lisp, а также директор по качеству поиска в Google (спасибо Гвидо ван Россуму за это замечание). Он говорит, что Python всегда был неотъемлемой частью Google. Вы можете убедиться в этом, заглянув на страницу Google Jobs, на которой владение Python указано как требование для разработчиков программного обеспечения.
- «Monty Python’s Flying Circus» (прим.перев.) ↩
При подготовке материала использовались источники:
https://habr.com/ru/articles/49428/
https://py3dev.ru/bop/introduction/