Python не использует фигурные скобки для обозначения структуры кода, вместо них используются сами отступы. Последние две строки предыдущего фрагмента являются телом цикла while , потому что они следуют сразу же за командой while , а их отступ на один уровень больше отступа команды while . Если бы эти строки не имели отступов, то они не считались бы частью тела while . Возможно, вы не сразу привыкнете к структурированию кода с использованием отступов вместо фигурных скобок, но у этого способа есть значительные преиму-щества:
Невозможно пропустить или поставить лишнюю фигурную скобку. Вам не при-дется шарить по своему коду и разыскивать завершающую фигурную скобку, которая соответствует открывающей фигурной скобке в самом начале файла. Визуальная структура кода отражает его реальную структуру, что позволяет
с первого взгляда составить представление о его строении. Стиль оформления кода в Python становится более или менее единым. Иначе
говоря, чужие представления об эстетически приятном коде вряд ли вызовут у вас особое раздражение. Код других разработчиков будет более или менее похож на ваш.
Возможно, вы уже используете постоянную схему расстановки отступов в вашем коде, так что это вряд ли станет большим изменением для вас. Если вы работаете
в IDLE, отступы будут расставляться автоматически. При желании вы всегда може-те сократить уровень отступов нажатием клавиши Backspace . Многие редакторы для программистов и интегрированные среды, например Emacs, VIM и Eclipse, также предоставляют эту функциональность. Одна из вещей, на которых вы споткнетесь раз-другой, прежде чем привыкнете, заключается в том, что интерпретатор Python возвращает сообщение об ошибке, если перед командами, вводимыми в приглаше-
нии, стоит пробел (или несколько пробелов).
4.2. Комментарии
Как правило, все символы, следующие за знаком # в файле Python, образуют ком-ментарий и игнорируются языком. Очевидным исключением из правила является символ # в строке, который просто присутствует в тексте: # Присвоить x значение 5.
x = 5
x = 3 # Теперь переменная x содержит 3.
x = "# This is not a comment"
Комментарии достаточно часто встречаются в коде Python.
4.3. Переменные и присваивание
Пожалуй, самая распространенная команда языка Python — присваивание — очень похожа на конструкции присваивания, которые вы использовали в других языках. Код Python для создания переменной с именем x и присваивания ей значения 5 выглядит так:
x = 5
В Python, в отличие от многих других компьютерных языков, не нужно ни объяв-лять тип переменной, ни включать ограничитель конца строки. Строка программы завершается там, где она завершается. Переменные создаются автоматически при первом присваивании.
ПЕРЕМЕННЫЕ В PYTHON: ВЕДРА ИЛИ ЯРЛЫКИ?Термин «переменная» в Python несколько неточен; точнее было бы назвать переменную « именем » или « ярлыком ». Однако похоже, все программисты в какой-то момент все равно называют переменные переменными . Как бы ни назывались переменные, вы должны знать, как они работают в Python.
Распространенное, хотя и неточное объяснение — что переменная является контейнером для хранения значения, чем-то вроде ведра, в котором лежит значение. Такая аналогия справед -лива для многих языков программирования (например, C).
С другой стороны, переменные Python на ведра не похожи. Они ближе к биркам или ярлыкам, которые ссылаются на объекты из пространства имен интерпретатора Python. На один объект может ссылаться любое количество ярлыков (или переменных), и при изменении этого объекта значение, на которое ссылаются все эти переменные, тоже изменяется.
Чтобы понять, что это означает, рассмотрим следующий простой фрагмент: >>> a = [1, 2, 3]
>>> b = a
>>> c = b
>>> b[1] = 5
>>> print(a, b, c)
[1, 5, 3] [1, 5, 3] [1, 5, 3]
Если рассматривать переменные как контейнеры, такой результат выглядит странно. Как изменение содержимого одного контейнера приводит к одновременному изменению содер -жимого двух других? Но если понимать, что переменные — всего лишь ярлыки, ссылающиеся на объекты, вполне логично, что изменение объекта, к которому относятся все три ярлыка, отразится сразу во всех местах.
Если переменные ссылаются на константы или неизменяемые значения, различие уже не столь очевидно:
>>> a = 1
>>> b = a
>>> c = b
>>> b = 5
>>> print(a, b, c)
1 5 1
Так как объекты, на которые они ссылаются, изменяться не могут, поведение переменных в данном случае соответствует любой аналогии. Собственно, после третьей строки a, b и c ссылаются на один неизменяемый объект целого числа со значением 1. Следующая строка b = 5 заставляет b ссылаться на объект целого числа 5, но не изменяет ссылки a или c. Переменным Python могут присваиваться любые объекты, тогда как в C и многих других языках переменная может хранить значения только того типа, с которым она была объявлена. Ниже приведен абсолютно нормальный код Python: >>> x = "Hello"
Читать дальше