Эта и последующие статьи в этой серии – перевод страниц руководства Python Basic Tutorial, с небольшими дополнениями и уточнениями. Замечания и предложения можно оставить в комментариях или на странице Контакты.
Язык Python во многом схож с языками Perl, C и Java, однако между ними имеются и определённые различия. В этой главе мы рассмотрим базовый синтаксис языка Python.
Содержание
Первая программа на Python
Программирование в интерактивном режиме
Вызвав интерпретатор Python без указания ему аргументом файла скрипта приведёт к вызову такой строки:
$ python Python 2.7.6 (default, Feb 28 2014, 12:29:01) [GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9 Type "help", "copyright", "credits" or "license" for more information. >>>
Наберите следующий текст справа от строки приглашения Python >>> и нажмите Enter:
>>> print "Hello, Python!"
Если вы используете Python версии 3.0 и выше – вам необходимо использовать оператор (statement) print
с круглыми скобками ()
(т.к. в Python 3 print
больше относится к функции, чем к оператору, в отличии от Python 2 версии):
>>> print ("Hello, Python!")
Однако, даже если у вас Python 2 – вы можете использовать скобки в целях улучшения совместимости ваших скриптов в разными версиями Python.
В результате – интерпретатор должен выдать такой результат:
Hello, Python!
Программирование скриптов
Вызов интерпретатора и передача ему в качестве аргумента скрипта начнёт выполнение этого скрипта, и будет продолжаться пока скрипт не завершится.
Давайте напишем простой скрипт на Python. Как правило – скрипты Python имеют расширение .py
. Создайте новый скрипт test.py
с таким содержимым:
print "Hello, Python!"
Тут предполагается, что у вас уже установлен Python и путь к нему добавлен в переменной $PATH
.
Что бы проверить это – выполните:
$ which python /usr/local/bin/python
$ echo $PATH | grep "/usr/local/bin" /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/setevoy/bin
Или так:
$ printenv | grep /usr/local/bin SHELL=/usr/local/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/setevoy/bin
Обратите внимание, что путь к интерпретатору /usr/local/bin/python
обычно используется в ОС FreeBSD, в системах Linux как правило Python располагается в:
$ which python /usr/bin/python
Теперь – давайте запустим наш скрипт:
$ python test.py
Что должно дать нам такой результат:
Hello, Python!
Другой способ запуска скриптов на Python – указание пути к интерпретатору в заголовке скрипта. Такой заголовок называется shebang
и начинается со знаков #!
.
Давайте отредактируем наш файл test.py
и приведём его к такому виду:
#!/usr/local/bin/python print "Hello, Python!"
Теперь – установим бит выполнения:
$ chmod +x test.py
И запустим наш скрипт:
$./test.py
В результате мы должны получить такой вывод:
Hello, Python!
Идентификаторы в Python
Идентификаторы в Python – это имена, используемые для определения (“идентификации“) переменных, функций, классов, модулей и других объектов. Идентификатор начинается с букв A-Z
или a-z
, либо знака подчеркивания (_
), после чего следуют ноль или больше букв (*совет – никогда не создавайте свою собственную переменную с именем “_”, т.к. это имя зарезервировано самими интерпретатором), знаков подчеркивания или цифр от 0 до 9.
В идентификаторах Python не используются знаки @, $
и %.
Так же – Python чувствителен к регистру символов, т.е. Manpower
и manpower
являются двумя различными именами (идентификаторами).
Вот основные правила именования идентификаторов в Python:
- Имена классов начинаются с заглавной буквы, а все остальные идентификаторы – со строчных;
- Если идентификатор начинается со знака подчёркивания (_) – то он является приватным;
- Starting an identifier with two leading underscores indicates a strongly private identifier.
- If the identifier also ends with two trailing underscores, the identifier is a language-defined special name.
Зарезервированные имена
В списке ниже приведены имена, которые зарезервированы в Python, и их использование не допускается в использовании определения констант, переменных или любых других пользовательских именах. Все зарезервированные слова содержат только строчные буквы:
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
Строки и отступы
Одно из самых важных замечаний для тех, кто начал изучать Python – это то, что в нём при обозначении границ блоков кода для классов и функций, а так же для управления потоками, не используются привычные некоторым фигурные скобки. Вместо этого – в Python используются отступы строк.
Количество отступов в начале строки не имеет значения, но все операторы внутри такого блока должны иметь их одинаковое количество.
Например, оба блока в примере ниже выполнены правильно:
>>> if True: ... print "True" ... else: ... print "False" ... True
А вот второй блок в следующем примере – приведёт к ошибке интерпретатора “unexpected indent
“:
>>> if True: ... print "Answer" ... print "True" ... else: ... print "Answer" ... print "False" File "<stdin>", line 6 print "False" ^ IndentationError: unexpected indent
Таким образом, все линии, имеющие одинаковое количество отступов от начала строки буду формировать блок кода. В примере ниже продемонстрированы блоки с различными операторами (не важно, что какие-то из функций в этом примере вам будут непонятны, главное – постарайтесь понять роль отступов в нём):
#!/usr/local/bin/python import sys try: # open file stream file = open(file_name, "w") except IOError: print "There was an error writing to", file_name sys.exit() print "Enter '", file_finish, print "' When finished" while file_text != file_finish: file_text = raw_input("Enter text: ") if file_text == file_finish: # close the file file.close break file.write(file_text) file.write("n") file.close() file_name = raw_input("Enter filename: ") if len(file_name) == 0: print "Next time please enter something" sys.exit() try: file = open(file_name, "r") except IOError: print "There was an error reading file" sys.exit() file_text = file.read() file.close() print file_text
Многострочные операторы
Операторы и операнды в Python как правило заканчиваются новой строкой. Однако, есть возможность использовать знак продолжения строки “” для обозначения того, что строка продолжается. Например:
>>> total = item_one + ... item_two + ... item_three
Операнды, заключённые в скобки [], {}
или ()
не нуждаются в использовании такого символа. Например:
>>> days = ['Monday', 'Tuesday', 'Wednesday', ... 'Thursday', 'Friday'] >>> print (days) ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
Что бы представлять себе разницу между “оператором” и “операндом” при выполнении “операции” – посмотрите на эту картинку:
Подробнее об операторах читайте в Python: Basic Tutorial – часть 3: базовые операторы.
Кавычки Python
В Python используются одинарные ('
), двойные ("
) и тройные ('''
или """
) кавычки для обозначения строковых литералов (или просто – строк).
Тройные кавычки могут использоваться для охвата многострочного текста.
Примеры:
>>> word = 'word' >>> sentence = "This is a sentence." >>> paragraph = """This is a paragraph. It is ... made up of multiple lines and sentences.""
Комментарии в Python
Хеш-тег (#
), который не находится внутри строки задаёт начало комментария. Все символы после #
и до конца строки являются частью комментария, и Python игнорирует их.
#!/usr/bin/python # First comment print "Hello, Python!"; # second comment
Приведённый выше код даст такой результат:
Hello, Python!
Комментарии так же можно размещать и на одной строке после операторов или выражения, например:
name = "Madisetti" # This is again comment
Многострочные комментарии можно создать так:
# This is a comment. # This is a comment, too. # This is a comment, too. # I said that already.
Или так:
>>> '''Line one ... second line ... third line'''
Пустые строки
Пустые строки, или строки содержащие только пробелы, или строки с комментариями, игнорируются интерпретатором.
В интерактивной сессии интерпретатора, необходимо ввести пустую строку для завершения многострочного оператора.
Ожидание ввода данных от пользователя
Следующая строка программы отобразит приглашение “Press the enter key to exit” и будет ожидать от пользователя нажатия Enter:
#!/usr/bin/python raw_input("nnPress the enter key to exit.")
Символы “nn
” тут используются для создания двух новых строк и перед отображением приглашения. Как только пользователь нажмёт Enter – программа завершится.
В Python 3 функция raw_input()
была заменена функцией input().
Множественные операторы в одной строке
Знак точки с запятой (;
) даёт возможность разместить несколько операторов в одной строке, при этом они не должны являться блоком кода. Вот пример вызова функции в одной строке с использованием (;
):
>>> import sys; x = 'foo'; sys.stdout.write(x + 'n') foo
Множественные группы и наборы операторов
Группа операторов, которые определены в один блок кода, в Python называются “набор” (suite
). Структура группы операторов, таких как if, while, def
, и class
и которая требует строки-заголовка для них представляют собой такой набор.
Строка заголовка начинается с определённого оператора, заканчивается двоеточием (:
), а продолжение такого набора – строки с остальными операторами. Например:
if expression: suite elif expression: suite else: suite
Аргументы командной строки Python
Вы, вероятно, уже встречались с тем, что многие программы предоставляют дополнительную информацию о том, как их можно запускать. В Python для этого используется ключ -h
:
$ python -h usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list) -d : debug output from parser (also PYTHONDEBUG=x) -E : ignore environment variables (such as PYTHONPATH) -h : print this help message and exit [ etc. ]