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

LXF74-75:Python

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{цикл/Python}} ''ЧАСТЬ 1 Язык программирования Python становится достаточно популярным и уже практически на ...)
 
м (Первая программа)
 
(не показаны 3 промежуточные версии 3 участников)
Строка 2: Строка 2:
 
''ЧАСТЬ 1 Язык программирования Python становится достаточно популярным и уже практически на равных может бороться за благосклонность пользователей с таким бывалым соперником, как Perl. Поэтому с ним стоит познакомиться, считает '''Сергей Супрунов'''.''
 
''ЧАСТЬ 1 Язык программирования Python становится достаточно популярным и уже практически на равных может бороться за благосклонность пользователей с таким бывалым соперником, как Perl. Поэтому с ним стоит познакомиться, считает '''Сергей Супрунов'''.''
  
==Немного истории==
+
== Немного истории ==
 
Началось все в далеком 1990 году, когда Гвидо ван Россум
 
Началось все в далеком 1990 году, когда Гвидо ван Россум
 
(Guido van Rossum) разработал первую версию языка Python,
 
(Guido van Rossum) разработал первую версию языка Python,
Строка 13: Строка 13:
 
многие другие программы.
 
многие другие программы.
  
==Отличительные особенности==
+
== Отличительные особенности ==
 
Почему же Python столь стремительно завоевывает популярность?
 
Почему же Python столь стремительно завоевывает популярность?
  
Прежде всего, будучи интерпретируемым языком, Python не требует компиляции, компоновки и прочих «премудростей» сценарий на
+
Прежде всего, будучи интерпретируемым языком, Python не требует компиляции, компоновки и прочих «премудростей» сценарий на
Python может быть запущен практически сразу же после редактирования. Это существенно снижает время разработки и делает Python весьма удобным для таких задач как создание прототипов программ, проверка работоспособности того или иного алгоритма, а также для администрирования, где время исполнения гораздо менее важный фактор,
+
Python может быть запущен практически сразу же после редактирования. Это существенно снижает время разработки и делает Python весьма удобным для таких задач как создание прототипов программ, проверка работоспособности того или иного алгоритма, а также для администрирования, где время исполнения гораздо менее важный фактор,
 
чем удобство модификации сценария.
 
чем удобство модификации сценария.
  
Строка 25: Строка 25:
 
ветвления процессов), то с большой долей вероятности ваш код, разработанный в Linux, сможет работать и во FreeBSD, и даже в Windows.
 
ветвления процессов), то с большой долей вероятности ваш код, разработанный в Linux, сможет работать и во FreeBSD, и даже в Windows.
  
Далее, поскольку Python язык высокого уровня, он позволяет
+
Далее, поскольку Python язык высокого уровня, он позволяет
вам сосредоточиться на алгоритме, на логике программы, не отвлекаясь на описание переменных, выделение памяти и т.п.
+
вам сосредоточиться на алгоритме, на логике программы, не отвлекаясь на описание переменных, выделение памяти и т. п.
  
Ну и самое главное Python разрабатывается как проект opensource,
+
Ну и самое главное Python разрабатывается как проект opensource,
 
то есть вы можете не только использовать его в своей работе
 
то есть вы можете не только использовать его в своей работе
 
без каких-либо ограничений, но и активно участвовать в его развитии.
 
без каких-либо ограничений, но и активно участвовать в его развитии.
  
 
Все это делает Python хорошим выбором для самого широкого
 
Все это делает Python хорошим выбором для самого широкого
спектра задач от автоматизации рутинных операций по администрированию и разработки графических «оберток» для консольных утилит
+
спектра задач от автоматизации рутинных операций по администрированию и разработки графических «оберток» для консольных утилит
 
до web-программирования и разработки прототипов в крупных
 
до web-программирования и разработки прототипов в крупных
 
проектах.
 
проектах.
  
==Где его взять?==
+
== Где его взять? ==
Большинству пользователей Linux об этом беспокоиться не нужно
+
Большинству пользователей Linux об этом беспокоиться не нужно -
 
Python входит почти во все популярные дистрибутивы. Откройте окно
 
Python входит почти во все популярные дистрибутивы. Откройте окно
 
терминала, наберите там команду python, и если в ответ увидите сообщение о версии интерпретатора и приглашение «>>>», значит, он у вас
 
терминала, наберите там команду python, и если в ответ увидите сообщение о версии интерпретатора и приглашение «>>>», значит, он у вас
Строка 49: Строка 49:
 
вашей операционной системы.
 
вашей операционной системы.
  
==Знакомство с интерактивной оболочкой и основы синтаксиса==
+
== Знакомство с интерактивной оболочкой и основы синтаксиса ==
 
Для первоначального изучения очень удобен интерактивный
 
Для первоначального изучения очень удобен интерактивный
режим вы сразу же получаете результат выполнения введенной
+
режим вы сразу же получаете результат выполнения введенной
 
команды, и в случае ошибки можете проанализировать причины ее
 
команды, и в случае ошибки можете проанализировать причины ее
 
возникновения и исправиться.
 
возникновения и исправиться.
  
Так что вводите команду python в окне терминала, и вперед! Для
+
Так что вводите команду python в окне терминала, и вперед! Для
 
начала потренируемся с математикой (после ввода команды в строке
 
начала потренируемся с математикой (после ввода команды в строке
 
приглашения, которая отмечается символами «>>>» следует нажимать
 
приглашения, которая отмечается символами «>>>» следует нажимать
Строка 69: Строка 69:
 
</source>
 
</source>
 
Ага, вот и первый сюрприз. Как и в языке C, при делении целого
 
Ага, вот и первый сюрприз. Как и в языке C, при делении целого
числа на целое результат тоже целое число, дробная часть отбрасывается. Чтобы обойти эту особенность, один из операндов нужно сделать числом с плавающей запятой:
+
числа на целое результат тоже целое число, дробная часть отбрасывается. Чтобы обойти эту особенность, один из операндов нужно сделать числом с плавающей запятой:
 
<source lang="python">
 
<source lang="python">
 
>>> a / 3.0
 
>>> a / 3.0
Строка 84: Строка 84:
 
</source>
 
</source>
 
В текущей версии языка для целочисленного деления существует
 
В текущей версии языка для целочисленного деления существует
отдельный оператор «//». Сейчас выражения 3/2 и 3//2 вернут один
+
отдельный оператор «//». Сейчас выражения 3/2 и 3//2 вернут один
 
и тот же результат, но в будущих версиях поведение «традиционного»
 
и тот же результат, но в будущих версиях поведение «традиционного»
 
оператор деления («/») может быть приведено к привычному для человека, когда 3/2 = 1.5.
 
оператор деления («/») может быть приведено к привычному для человека, когда 3/2 = 1.5.
Строка 91: Строка 91:
 
заключены как в апострофы, так и в кавычки):
 
заключены как в апострофы, так и в кавычки):
 
<source lang="python">
 
<source lang="python">
>>> ‘Hello, + “world!
+
>>> 'Hello, ' + "world!"
‘Hello, world!
+
'Hello, world!'
>>> “127” + 5
+
>>> "127" + 5
 
Traceback (most recent call last):
 
Traceback (most recent call last):
File <stdin>, line 1, in ?
+
File "<stdin>", line 1, in ?
TypeError: cannot concatenate ‘str’ and ‘int’ objects
+
TypeError: cannot concatenate 'str' and 'int' objects
 
</source>
 
</source>
А вот смешивать символьные типы с числовыми нельзя это вам
+
А вот смешивать символьные типы с числовыми нельзя это вам
не Perl! Еще одна интересная операция для строк повторение:
+
не Perl! Еще одна интересная операция для строк повторение:
 
<source lang="python">
 
<source lang="python">
>>> =* 25
+
>>> '=' * 25
=========================
+
'========================='
 
</source>
 
</source>
 
При выводе динамически формируемых текстовых строк важное
 
При выводе динамически формируемых текстовых строк важное
 
значение имеют символы подстановки:
 
значение имеют символы подстановки:
 
<source lang="python">
 
<source lang="python">
>>> language = ‘Python’
+
>>> language = 'Python'
>>> print “I like %s” % language
+
>>> print "I like %s" % language
 
I like Python
 
I like Python
 
</source>
 
</source>
 
Здесь мы в выводимом тексте создаем так называемое «знакоместо» %s, которое затем заполняется значением переменной, стоящей
 
Здесь мы в выводимом тексте создаем так называемое «знакоместо» %s, которое затем заполняется значением переменной, стоящей
 
после оператора %. В последующих статьях цикла мы познакомимся с
 
после оператора %. В последующих статьях цикла мы познакомимся с
ними более подробно. Ну а оператор print, думаю, пояснять не нужно
+
ними более подробно. Ну а оператор print, думаю, пояснять не нужно -
 
он просто выводит строку на экран (обратите внимание на отсутствие
 
он просто выводит строку на экран (обратите внимание на отсутствие
 
апострофов в выводе команды).
 
апострофов в выводе команды).
Строка 119: Строка 119:
 
Чтобы выйти из командной оболочки, нажмите [Ctrl]+[D].
 
Чтобы выйти из командной оболочки, нажмите [Ctrl]+[D].
  
==Первая программа==
+
== Первая программа ==
 
Настало время написать первую настоящую программу. Откройте ваш
 
Настало время написать первую настоящую программу. Откройте ваш
 
любимый текстовый редактор. Я предпочитаю работать в vi, но вы
 
любимый текстовый редактор. Я предпочитаю работать в vi, но вы
 
вполне можете выбрать и более привычный инструмент; кроме того,
 
вполне можете выбрать и более привычный инструмент; кроме того,
существует немало редакторов, обладающих рядом сервисных функций, таких как подсветка синтаксиса, автоотступ и т.д. Один из них, Eric,
+
существует немало редакторов, обладающих рядом сервисных функций, таких как подсветка синтаксиса, автоотступ и т. д. Один из них, Eric,
 
рассматривается в разделе HotPicks. Вы также можете обратить внимание на KDevelop и IDLE, редактор, поставляемый вместе с Python.
 
рассматривается в разделе HotPicks. Вы также можете обратить внимание на KDevelop и IDLE, редактор, поставляемый вместе с Python.
 
Наберите приведенный ниже код. Немного нарушив традицию, мы сразу приступим к сравнительно сложному примеру, который позволит
 
Наберите приведенный ниже код. Немного нарушив традицию, мы сразу приступим к сравнительно сложному примеру, который позволит
 
познакомиться с большинством синтаксических особенностей языка.
 
познакомиться с большинством синтаксических особенностей языка.
Да и «Hello, World!» мы фактически уже написали, когда были в интерактивной оболочке. Еще одна просьба когда будете вводить код, не
+
Да и «Hello, World!» мы фактически уже написали, когда были в интерактивной оболочке. Еще одна просьба когда будете вводить код, не
спешите читать его описание далее в этой статье. Постарайтесь догадаться сами, что делает этот сценарий это совсем не сложно. Итак,
+
спешите читать его описание далее в этой статье. Постарайтесь догадаться сами, что делает этот сценарий это совсем не сложно. Итак,
 
код (сохраните его в файле test1.py):
 
код (сохраните его в файле test1.py):
 
<source lang="python">
 
<source lang="python">
 
#!/usr/bin/python
 
#!/usr/bin/python
prompt = >
+
prompt = '> '
cmd = ‘nocmd’
+
cmd = 'nocmd'
while cmd != ‘exit’:
+
while cmd != 'exit':
cmd = raw_input(prompt)
+
    cmd = raw_input(prompt)
if cmd == ‘about’:
+
    if cmd == 'about':
print ‘It is my first python script’
+
        print 'It is my first python script'
elif cmd == ‘help’:
+
    elif cmd == 'help':
print ‘’’Commands:
+
        print '''Commands:
 
about – about this program
 
about – about this program
 
help – this information
 
help – this information
exit – quit the program’’’
+
exit – quit the program'''
elif cmd ==’exit’:
+
    elif cmd =='exit':
pass # пустая команда – не делает ничего
+
        pass # пустая команда – не делает ничего
else:
+
    else:
print ‘Command not found. Type “help”’
+
        print 'Command not found. Type "help"'
print ‘Bye.
+
print 'Bye.'
 
</source>
 
</source>
 
Для удобства чтения строковые константы выделены в тексте курсивом. Надеюсь, вы уже поняли, что приведенный скрипт должен
 
Для удобства чтения строковые константы выделены в тексте курсивом. Надеюсь, вы уже поняли, что приведенный скрипт должен
Строка 156: Строка 156:
 
* exit: команда выхода из программы.
 
* exit: команда выхода из программы.
  
В этом фрагменте мы встречаемся с одним из циклов (while, другой популярный цикл for рассмотрим в следующей статье) и оператором ветвления if-elif-else. Если вы знакомы с каким-нибудь языком программирования, то все вам будет понятно. Но обратите внимание на синтаксис: в Python неотъемлемой частью программы являются
+
В этом фрагменте мы встречаемся с одним из циклов (while, другой популярный цикл for рассмотрим в следующей статье) и оператором ветвления if-elif-else. Если вы знакомы с каким-нибудь языком программирования, то все вам будет понятно. Но обратите внимание на синтаксис: в Python неотъемлемой частью программы являются
 
отступы. Именно они показывают интерпретатору, где заканчивается
 
отступы. Именно они показывают интерпретатору, где заканчивается
 
тот или иной блок кода. В приведенном выше примере последняя строка будет выполнена при выходе из цикла, поскольку она не имеет
 
тот или иной блок кода. В приведенном выше примере последняя строка будет выполнена при выходе из цикла, поскольку она не имеет
Строка 165: Строка 165:
 
команды «help»). Такие строки могут содержать в себе и символы
 
команды «help»). Такие строки могут содержать в себе и символы
 
перевода строки, и табуляцию. Интерпретатор воспринимает все это
 
перевода строки, и табуляцию. Интерпретатор воспринимает все это
как одну строковую константу на экран все будет выведено именно
+
как одну строковую константу на экран все будет выведено именно
так, как набрано в коде сценария. (Чтобы было проще понять программу, замените на первых порах эту строку обычной, тогда она не будет
+
так, как набрано в коде сценария. (Чтобы было проще понять программу, замените на первых порах эту строку обычной, тогда она не будет
 
сбивать вас с толку и лучше будет видно структуру сценария).
 
сбивать вас с толку и лучше будет видно структуру сценария).
  
На Unix-подобных системах очень важную роль играет самая первая строка сценария в ней следует указать путь к интерпретатору
+
На Unix-подобных системах очень важную роль играет самая первая строка сценария в ней следует указать путь к интерпретатору
 
python (обычно это /usr/bin/python или /usr/local/bin/python). В
 
python (обычно это /usr/bin/python или /usr/local/bin/python). В
остальных строках символ «#» означает начало комментария все,
+
остальных строках символ «#» означает начало комментария все,
 
что за ним следует, интерпретатором игнорируется.
 
что за ним следует, интерпретатором игнорируется.
  
Строка 179: Строка 179:
 
serg$ ./test1.py
 
serg$ ./test1.py
 
> hello
 
> hello
Command not found. Type “help”
+
Command not found. Type "help"
 
> help
 
> help
 
Commands:
 
Commands:
Строка 195: Строка 195:
 
Ну что ж. Для первого урока, думаю, достаточно. В следующий раз
 
Ну что ж. Для первого урока, думаю, достаточно. В следующий раз
 
мы рассмотрим так называемые последовательности (списки, кортежи
 
мы рассмотрим так называемые последовательности (списки, кортежи
и словари) очень важные типы данных, делающие Python столь мощным языком программирования, а также затронем основы работы
+
и словари) очень важные типы данных, делающие Python столь мощным языком программирования, а также затронем основы работы
 
с функциями и модулями.
 
с функциями и модулями.

Текущая версия на 12:19, 11 сентября 2010

ЧАСТЬ 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 столь мощным языком программирования, а также затронем основы работы с функциями и модулями.

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