Основы Python: Синтаксис и фундаментальные концепции
Первая программа на Python
Python похож на Perl, C и Java, но имеет существенные отличия.
Интерактивный режим
Запуск интерпретатора без скрипта показывает приглашение:
$ python Python 2.4.3 (#1, Nov 11 2010, 13:34:43) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Введите в приглашении:
>>> print "Hello, Python!"
В новых версиях Python (3.x) используйте print("Hello, Python!"). В версии 2.4.3 результат:
Hello, Python!
Скриптовый режим
Запуск интерпретатора с файлом скрипта выполняет его до конца. Файлы Python имеют расширение .py.
Создайте test.py:
Live Demoprint "Hello, Python!"
Запуск (предполагается, что Python в PATH):
$ python test.py
Результат:
Hello, Python!
Альтернативный способ — сделать скрипт исполняемым:
Live Demo#!/usr/bin/python print "Hello, Python!"
Команды:
$ chmod +x test.py $ ./test.py
Результат тот же.
Идентификаторы в Python
Идентификатор — имя переменной, функции, класса, модуля или объекта. Начинается с буквы (A-Z, a-z) или подчёркивания (_), далее — буквы, подчёркивания, цифры (0-9).
Нельзя использовать @, $, % в идентификаторах. Python чувствителен к регистру: Manpower и manpower — разные идентификаторы.
Соглашения по именованию:
- Имена классов — с заглавной буквы. Остальные — со строчной.
- Одиночное подчёркивание в начале — приватный идентификатор.
- Два подчёркивания в начале — строго приватный.
- Два подчёркивания в начале и в конце — специальное имя языка.
Зарезервированные слова
Ключевые слова 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 не использует фигурные скобки для блоков кода. Блоки обозначаются отступами (пробелами), что строго контролируется.
Количество пробелов в отступе может варьироваться, но все операторы внутри блока должны иметь одинаковый отступ.
Правильно:
if True:
print "True"
else:
print "False"
Ошибка (разный отступ):
if True:
print "Answer"
print "True"
else:
print "Answer"
print "False"
Все последовательные строки с одинаковым отступом формируют блок. Пример с различными блоками:
#!/usr/bin/python
import sys
try:
file = open(file_name, "w")
except IOError:
print "There was an error writing to", file_name
sys.exit()
print "Enter '", file_finish, "' When finished"
while file_text != file_finish:
file_text = raw_input("Enter text: ")
if file_text == file_finish:
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
Многострочные операторы
Операторы обычно заканчиваются новой строкой. Для переноса используется обратный слеш \:
total = item_one + \
item_two + \
item_three
Внутри [], {}, () перенос не требуется:
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
Кавычки в Python
Допускаются одинарные ('), двойные (") и тройные (''' или """) кавычки для строковых литералов, если открывающие и закрывающие совпадают. Тройные кавычки позволяют строку распределить на несколько строк:
word = 'word' sentence = "This is a sentence." paragraph = """This is a paragraph. It is made up of multiple lines and sentences."""
Комментарии в Python
Символ # (не внутри строки) начинает комментарий. Все символы до конца строки игнорируются интерпретатором.
Live Demo#!/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.
Тройные кавычки также игнорируются и могут служить многострочными комментариями:
''' This is a multiline comment. '''
Пустые строки
Строка, содержащая только пробелы (возможно, с комментарием), называется пустой и полностью игнорируется Python. В интерактивном режиме пустая физическая строка завершает многострочный оператор.
Ожидание пользователя
Следующая строка выводит подсказку и ждёт нажатия Enter:
#!/usr/bin/python
raw_input("\n\nPress the enter key to exit.")
\n\n создаёт две пустые строки перед текстом. Удобно для удержания консольного окна открытым.
Несколько операторов в одной строке
Точка с запятой ; позволяет писать несколько операторов в одной строке, если ни один не начинает новый блок:
import sys; x = 'foo'; sys.stdout.write(x + '\n')
Группы операторов как суиты (suites)
Группа отдельных операторов, образующая единый блок, называется suite. Сложные операторы (if, while, def, class) требуют заголовочной строки и суита.
Заголовочная строка начинается с ключевого слова и заканчивается двоеточием (:), за которым следуют строки суита. Например:
if expression:
suite
elif expression:
suite
else:
suite
Аргументы командной строки
Многие программы дают базовую справку по запуску с ключом -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. ]
Скрипты могут принимать различные опции. Аргументы командной строки — продвинутая тема, изучайте после основных концепций Python.
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
- Основы Java: базовый синтаксис, классы, объекты и методы
- Базовый синтаксис C: токены, идентификаторы, ключевые слова и пробелы
- Понимание C++: базовый синтаксис и основы ООП
- Основы MATLAB: Синтаксис, команды и спецсимволы
- Основы C#: базовый синтаксис и концепции ООП