Журнал LinuxFormat - перейти на главную

LXF74-75:Python

Материал из Linuxformat
Перейти к: навигация, поиск

ЧАСТЬ 1 Язык программирования Python становится достаточно популярным и уже практически на равных может бороться за благосклонность пользователей с таким бывалым соперником, как Perl. Поэтому с ним стоит познакомиться, считает Сергей Супрунов.

Содержание

Немного истории

Началось все в далеком 1990 году, когда Гвидо ван Россум (Guido van Rossum) разработал первую версию языка Python, который появился в свободном доступе в 1991 году. Первоначально созданный как язык сценариев для разрабатываемой Россумом системы Amoeba, он оказался настолько хорош и переносим, что достаточно быстро получил распространение на самых различных операционных системах.

Сейчас этот язык входит в поставку практически всех популярных дистрибутивов Linux; его, наряду с Perl, поддерживают Apache (модуль mod_python), PostgreSQL (процедурный язык PL/Python) и многие другие программы.

Отличительные особенности

Почему же Python столь стремительно завоевывает популярность?

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

Вторым большим плюсом этого языка является уже упоминавшаяся переносимость между различными системами. Если вы не используете специфические особенности платформы (например, команду fork для ветвления процессов), то с большой долей вероятности ваш код, разработанный в Linux, сможет работать и во FreeBSD, и даже в Windows.

Далее, поскольку Python — язык высокого уровня, он позволяет вам сосредоточиться на алгоритме, на логике программы, не отвлекаясь на описание переменных, выделение памяти и т. п.

Ну и самое главное — Python разрабатывается как проект opensource, то есть вы можете не только использовать его в своей работе без каких-либо ограничений, но и активно участвовать в его развитии.

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

Где его взять?

Большинству пользователей Linux об этом беспокоиться не нужно - Python входит почти во все популярные дистрибутивы. Откройте окно терминала, наберите там команду python, и если в ответ увидите сообщение о версии интерпретатора и приглашение «>>>», значит, он у вас уже есть. Если же вам не повезло и вы увидели сообщение «Command not found», то придется озаботиться его установкой.

Свежую версию Python (архив с исходными кодами) всегда можно найти на официальной странице: http://www.python.org/download/ . Кроме того, вы наверняка сможете найти пакет, подготовленный для вашей операционной системы.

Знакомство с интерактивной оболочкой и основы синтаксиса

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

Так что вводите команду python в окне терминала, и — вперед! Для начала потренируемся с математикой (после ввода команды в строке приглашения, которая отмечается символами «>>>» следует нажимать [Enter], чтобы увидеть результат):

>>> 1+3
4
>>> a=5
>>> 3 + a
8
>>> a / 3
1

Ага, вот и первый сюрприз. Как и в языке C, при делении целого числа на целое результат — тоже целое число, дробная часть отбрасывается. Чтобы обойти эту особенность, один из операндов нужно сделать числом с плавающей запятой:

>>> a / 3.0
1.6666666666666667
>>> (a * 1.0) / 3
1.6666666666666667

Этот пример показывает, что в Python существует понятие «тип переменной», и если преобразование между типами не лишено смысла, то оно выполняется прозрачно для программиста. Впрочем, можно использовать и явное преобразование:

>>> float(a) / 3
1.6666666666666667

В текущей версии языка для целочисленного деления существует отдельный оператор — «//». Сейчас выражения 3/2 и 3//2 вернут один и тот же результат, но в будущих версиях поведение «традиционного» оператор деления («/») может быть приведено к привычному для человека, когда 3/2 = 1.5.

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

>>> 'Hello, ' + "world!"
'Hello, world!'
>>> "127" + 5
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects

А вот смешивать символьные типы с числовыми нельзя — это вам не Perl! Еще одна интересная операция для строк — повторение:

>>> '=' * 25
'========================='

При выводе динамически формируемых текстовых строк важное значение имеют символы подстановки:

>>> language = 'Python'
>>> print "I like %s" % language
I like Python

Здесь мы в выводимом тексте создаем так называемое «знакоместо» %s, которое затем заполняется значением переменной, стоящей после оператора %. В последующих статьях цикла мы познакомимся с ними более подробно. Ну а оператор print, думаю, пояснять не нужно - он просто выводит строку на экран (обратите внимание на отсутствие апострофов в выводе команды).

Чтобы выйти из командной оболочки, нажмите [Ctrl]+[D].

Первая программа

Настало время написать первую настоящую программу. Откройте ваш любимый текстовый редактор. Я предпочитаю работать в vi, но вы вполне можете выбрать и более привычный инструмент; кроме того, существует немало редакторов, обладающих рядом сервисных функций, таких как подсветка синтаксиса, автоотступ и т. д. Один из них, Eric, рассматривается в разделе HotPicks. Вы также можете обратить внимание на KDevelop и IDLE, редактор, поставляемый вместе с Python. Наберите приведенный ниже код. Немного нарушив традицию, мы сразу приступим к сравнительно сложному примеру, который позволит познакомиться с большинством синтаксических особенностей языка. Да и «Hello, World!» мы фактически уже написали, когда были в интерактивной оболочке. Еще одна просьба — когда будете вводить код, не спешите читать его описание далее в этой статье. Постарайтесь догадаться сами, что делает этот сценарий — это совсем не сложно. Итак, код (сохраните его в файле test1.py):

#!/usr/bin/python
prompt = '> '
cmd = 'nocmd'
while cmd != 'exit':
cmd = raw_input(prompt)
if cmd == 'about':
print 'It is my first python script'
elif cmd == 'help':
print '''Commands:
about – about this program
help – this information
exit – quit the program'''
elif cmd =='exit':
pass # пустая команда – не делает ничего
else:
print 'Command not found. Type "help"'
print 'Bye.'

Для удобства чтения строковые константы выделены в тексте курсивом. Надеюсь, вы уже поняли, что приведенный скрипт должен будет имитировать работу простейшей командной оболочки, запрашивая у пользователя команды и выводя результат их исполнения. Таких команд три:

  • about: вывести информацию о программе;
  • help: напечатать краткую справку по работе с программой;
  • exit: команда выхода из программы.

В этом фрагменте мы встречаемся с одним из циклов (while, другой популярный цикл — for — рассмотрим в следующей статье) и оператором ветвления if-elif-else. Если вы знакомы с каким-нибудь языком программирования, то все вам будет понятно. Но обратите внимание на синтаксис: в Python неотъемлемой частью программы являются отступы. Именно они показывают интерпретатору, где заканчивается тот или иной блок кода. В приведенном выше примере последняя строка будет выполнена при выходе из цикла, поскольку она не имеет отступа и потому телу цикла while не принадлежит.

Особо следует пояснить отсутствие отступа в строках, заключенных в тройные апострофы (фрагмент elif, отвечающий за выполнение команды «help»). Такие строки могут содержать в себе и символы перевода строки, и табуляцию. Интерпретатор воспринимает все это как одну строковую константу — на экран все будет выведено именно так, как набрано в коде сценария. (Чтобы было проще понять программу, замените на первых порах эту строку обычной, — тогда она не будет сбивать вас с толку и лучше будет видно структуру сценария).

На Unix-подобных системах очень важную роль играет самая первая строка сценария — в ней следует указать путь к интерпретатору python (обычно это /usr/bin/python или /usr/local/bin/python). В остальных строках символ «#» означает начало комментария — все, что за ним следует, интерпретатором игнорируется.

Осталось сделать наш файл исполняемым (chmod +x test1.py) и убедиться, что все работает правильно:

serg$ ./test1.py
> hello
Command not found. Type "help"
> help
Commands:
about – about this program
help – this information
exit – quit the program
> about
It is my first python script
> exit
Bye.

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

Ну что ж. Для первого урока, думаю, достаточно. В следующий раз мы рассмотрим так называемые последовательности (списки, кортежи и словари) — очень важные типы данных, делающие Python столь мощным языком программирования, а также затронем основы работы с функциями и модулями.

Персональные инструменты
купить
подписаться
Яндекс.Метрика