- •§0.1. Базовые знания
- •§0.2. Где достать интерпретатор языка Питон?
- •§0.3. Установка интерпретатора языка Питон в unix
- •§0.3.1. Установка/обновление Питона из грт-пакета
- •§0.3.2. Установка Питона из исходного кода
- •§0.4. Установка Питона в ос Windows
- •§0.5. Запуск программ, написанных на Питоне
- •§0.6. Среда разработки
- •§1.1. Алгоритмы и программы
- •§1.2. Языки программирования и уровни абстракции
- •Глава 1. Базовые понятия
- •§1.3. Формальные и естественные языки
- •§1.4. Интерпретаторы и компиляторы
- •§1.5. Первая программа
- •§1.6. Что такое отладка?
- •§1.6.1. Синтаксические ошибки (syntax errors)
- •§1.6.2. Ошибки выполнения (runtime errors)
- •§1.6.3. Семантические ошибки (semantic errors)
- •§1.6.4. Процесс отладки
- •Глава 2. Переменные, операции и выражения
- •§2.1. Значения и типы
- •§2.2. Преобразование типов
- •§2.3. Переменные
- •§2.4. Имена переменных и ключевые слова
- •§2.5. Выражения
- •§2.6. Выполнение выражений
- •§2.7. Операторы и операнды
- •§2.8. Порядок операций
- •§2.9. Простейшие операции над строками
- •§2.10. Композиция
- •Глава 3. Функции §3.1. Подпрограммы
- •§3.2. Вызовы функций
- •§3.3. Справочная система
- •§3.4. Импорт модулей и математические функции
- •§3.5. Композиция
- •§3.6. Создание функций
- •§3.7. Параметры и аргументы
- •§3.8. Локальные переменные
- •§3.9. Поток выполнения
- •§3.10. Стековые диаграммы
- •§3.11. Функции, возвращающие результат
- •Глава 4. Компьютерная графика
- •Глава 5. Логические выражения, условия и рекурсия §5.1. Комментарии в программах
- •§5.2. Простые логические выражения и логический тип данных
- •§5.3. Логические операторы
- •§5.4. Выполнение по условию и «пустота»
- •§5.5. Ввод данных с клавиатуры
- •§5.6. Альтернативные ветки программы (Chained conditionals)
- •§5.7. Пустые блоки
- •§5.8. Вложенные условные операторы (Nested conditionals)
- •§5.9. Рекурсия
- •§5.10. Стековые диаграммы рекурсивных вызовов
- •§5.11. Максимальная глубина рекурсии
- •§5.12. Числа Фибоначчи
- •Глава 6. Циклы
- •§6.1. Оператор цикла while
- •§6.2. Счетчики
- •§6.3. Бесконечные циклы
- •§6.4. Альтернативная ветка цикла while
- •§6.5. Табулирование функций
- •§6.6. Специальные и экранируемые символы
- •§6.7. Числа Фибоначчи и оператор цикла while
- •§6.8. Вложенные операторы цикла и двумерные таблицы
- •§6.9. Классификация операторов цикла
- •§6.10. Управляющие структуры
- •Глава 7. Строки
- •§7.1. Оператор индексирования
- •§7.2. Длина строки и отрицательные индексы
- •§7.3. Перебор и цикл for
- •§7.4. Срезы строк
- •§7.5. Сравнение строк
- •§7.6. Строки нельзя изменить
- •§7.7. Функция find
- •§7.8. Циклы и счётчики
- •§7.9. Модуль string
- •§7.10. Классификация символов
- •§10.2. Операции над словарями
- •§10.3. Методы словарей
- •§10.4. Использование псевдонимов и копирование
- •§10.5. Разряженные матрицы
- •§10.6. Подсказки
- •§10.7. Тип «длинное целое число»
- •§10.8. Подсчет букв
§2.4. Имена переменных и ключевые слова
Как заметил Фредерик Брукс (Frederick P. Brooks, Jr)5, самое захватывающее в профессии программиста то, что он работает с идеей в чистом виде: он записывает абстрактные идеи с помощью формальных языков, чтобы те облегчали труд другим людям. Для преобразования абстрактной, непроявленной в материальном мире идеи в код программы необходимо выделить сущности и действия, придумать им названия, чтобы ими управлять, проследить связи между ними и их свойствами. Вы, наверное, догадались, что именами сущностей, с которыми работает программист, служат переменные. Поэтому стоит выбирать осмысленные названия переменных.
Имена переменных могут быть произвольной длины, но старайтесь выбирать не слишком короткие и не слишком длинные имена - от этого зависит читабельность программы.
При составлении имен переменных в Питоне можно использовать любые латинские буквы, цифры и знак _ (знак подчеркивания). Знак подчеркивания может использоваться для
5 Фредерик Брукс (Frederick P. Brooks, Jr) руководил знаменитым проектом IBM OS/360; его перу
принадлежит принцип No Silver Bullet (NSB - «Серебрянной пули нет», в смысле универсального средства борьбы с проектами- «монстрами»). Речь идет о его книге «Мифический человеко-месяц, или как создаются программные системы».
26
Ревизия: 170 Переменные, операции и выражения
разделения слов составляющих имя переменной: например, user_name или full_price. Но названия переменных не могут начинаться с цифры.
>» Imessage |
= "Hello |
world!" |
|
||
File "<stdin>", line |
1 |
|
|||
Imessage |
= "Hello |
world!" |
|
||
SyntaxError: |
invalid s |
yntax |
|
||
>» price in |
_$ = 300 |
|
|
||
File "<stdin>", line |
1 |
|
|||
price in |
_$ = 300 |
|
|
||
SyntaxError: |
invalid s |
yntax |
|
||
>» class = |
'Computer |
Science |
101" |
||
File "<stdin>", line |
1 |
|
|||
class = |
'Computer |
Science |
101" |
||
SyntaxError: |
invalid s |
yntax |
|
||
Разберем эти три примера. Первое же выражение интерпретатору не понравилось, и он отметил знаком Л, где именно у него возникли претензии: он указал на имя переменной Imessage. Действительно, имя Imessage является некорректным, ведь оно начинается с цифры. Аналогичная ситуация с именем price_in_$: оно содержит недопустимый символ $. Но что интерпретатору не нравится в третьем выражении? Давайте попробуем изменить имя переменной class на что-нибудь похожее, например, class_:
>» class = "Computer |
Science |
101" |
>» print class |
|
|
Computer Science 101 |
|
|
Теперь все в порядке. В чем же дело? Почему имя class вызвало ошибку, а имя class_ - нет? Какие есть предположения? Поставим еще один эксперимент:
>» print = |
"Some |
message" |
File "<stdin>", |
line 1 |
|
print = |
"Some |
message" |
SyntaxError |
inva |
Lid syntax |
Знакомая ситуация, не так ли? Проанализируем то, что мы получили. В качестве имени переменной мы пытались использовать команду print и получили аналогичную ошибку, значит слово class, скорее всего, тоже является командой или каким-то служебным словом.
Действительно, слова class и print являются так называемыми ключевыми словами. Всего в Питоне версии 2.3. зарезервировано 29 ключевых слов:
27
Ревизия: 170
Переменные, операции и выражения
and |
del |
for |
is |
raise |
assert |
elif |
from |
lambda |
return |
break |
else |
global |
not |
try |
class |
except |
if |
or |
while |
continue |
exec |
import |
pass |
yield |
def |
finally |
in |
|
Полезно иметь этот список под рукой, чтобы заглянуть в него, когда вдруг интерпретатору не понравится одно из имен переменных.
Имейте также ввиду, что интерпретатор различает большие и маленькие буквы, т.е. message и Message будут разными переменными.
Упражнение. Напишите программу, которая подтверждает, что интерпретатор Питона различает строчные и заглавные буквы в именах переменных.
