Лутц М. - Изучаем Python (1077325), страница 69
Текст из файла (страница 69)
Так как путь интерпретатора Ру(Ьоп через текст программы называется потоком упраелепия, такие инструкции, как 1т, часто называются инструкциями управления потоком выполнения. ° Границы блоков и инструкций определяются автоматически. Как мы уже видели, в языке РуФоп отсутствуют фигурные скобки или разделители «Ьей(п/епс(», окружающие блоки программного кода. Вместо этого принадлежность инструкций к вложенному блоку определяется по величине отступов. Так же инструкции в языке Ру(Ьоп обычно не завершаются точкой с запятой; обычно признаком конца инструкции служит конец строки с этой инструкцией.
° Составные инструкции = заголовок, «:», инструкции с отступами. Все составные инструкции в языке РуФЬоп оформляются одинаково: строка с заголовком завершается двоеточием, далее следуют одна или более вложенных инструкций, обычно с отступом относительно заголовка.
Эти инструкции с отступами называются блохом (или иногда набором). В инструкции т т предложения е11т и е1вв являются не только частями инструкции 1~, но и заголовками с собственными вложенными блоками. ° Пустые строки, пробелы и комментарии обычно игнорируются. Пустые строки игнорируются в файлах (но не в интерактивной оболочке). Пробелы внутри инструкций и выражений игнорируются практически всегда (за исключением строковых литералов, а также когда они используются для оформления отступов). Комментарии игнорируются всегда: они начинаются с символа Ф (не внутри строковых литералов) и простираются до конца строки. ° Строки документирования игнорируются, но сохраняются и отображаются специализированными инструментами. В языке РуФоп поддерживается дополнительная форма комментариев, называемая строками документирования, которые в отличие от комментариев, начинающихся с Ф, сохраняются для просмотра во время выполнения.
Строки документирования — это обычные строки, которые располагаются в начале файлов с программами и в некоторых инструкциях. Интерпретатор игнорирует их содержимое, но они автоматически присоединяются к объектам во время выполнения и могут отображаться инструментами доступа к документации. Строки документирования являются частью стратегии документирования в языке РуФЬоп и будут рассматриваться в последней главе этой части книги. Как уже говорилось ранее, в языке Ру1Ьоп отсутствует необходимость объявлять типы переменных — только один этот факт упрощает синтаксис языка больше, чем любые другие особенности. Но для большинства новых пользователей самой необычной особенностью синтаксиса языка Ру(Ьоп кажется отсутствие фигурных скобок и точек с запятой, Синтаксические правила языка РутЬоп Вообще программный код верхнего уровня (не вложенный) должен начинаться в строках с позиции 1.
Вложенные блоки могут начинаться с любой позиции — отступ может состоять из любого числа пробелов и символов табуляции, главное, чтобы все инструкции в одном блоке имели одинаковые отступы. То есть для интерпретатора неважно, как будут оформляться отступы, главное, чтобы оформление было непротиворечивым. С технической точки зрения считается, что символ табуляции смещает текущую позицию в строке на восемь пробелов, но обычно не принято смешивать символы табуляции и пробелы внутри блока— используйте что-то одно — или пробелы, или символы табуляции. Единственное, где в языке РуФЬоп пробелы имеют большое значение,— это когда они находятся левее программного кода; в большей части других случаев неважно, есть пробелы или нет.
При этом отступы являются частью синтаксиса языка, а не просто оформлением: все инструкции внутри любого заданного блока должны иметь одинаковые отступы, в противном случае интерпретатор сообщит о синтаксической ошибке. Так как вам не требуется явно отмечать начало и конец вложенного блока, различные синтаксические элементы, которые можно найти в других языках, в языке Ру$Ьоп не нужны. Отступы, как часть синтаксической модели, стали важным компонентом обеспечения удобочитаемости в языках структурного программирования, таких как Ру(Ьоп. Иногда синтаксис языка РуФЬоп описывают фразой «тэЬаФ уои эее (а тктЬа$ уои бей» (что видишь, то и получаешь)— отступ каждой строки однозначно говорит, к какому блоку она принадлежит.
Такой непротиворечивый внешний вид программного кода на языке РусЬоп обеспечивает простоту его сопровождения и многократного использования. Программный код, в котором отступы оформлены непротиворечивым образом, всегда будет соответствовать правилам языка РуФЬоп. Кроме того, многие текстовые редакторы (включая 1П( Е) упрощают следование модели отступов, автоматически выравнивая программный код по мере его ввода.
Разделители инструкций В языке Ру$Ьоп инструкция обычно заканчивается в конце строки. Однако, если инструкция слишком велика, чтобы уместиться в одной строке, можно использовать следующие специальные правила размещения инструкции в нескольких строках: ° Инструкции могут располагаться в нескольких строках, если они окружены синтаксической парой скобок. Язык Ру1Ьоп позволяет продолжить ввод инструкции в следующей строке, когда содержимое инструкции заключено в пару скобок (), () или []. Примерами инструкций, которые могут располагаться в нескольких строках, могут служить выражения в круглых скобках, литералы словарей и списков — инструкция не считается законченной, пока интерпре- Глава 12, Условная инструкция й згг татор Ру()ьоп не встретит строку с закрывающей скобкой (), ) или )).
Промежуточные строки могут иметь любые отступы и не обязательно должны быть выровнены по вертикали. ° Инструкции могут располагаться в нескольких строках, если они завершаются символом обратного олеша. Это несколько устаревшая особенность, но если необходимо разместить инструкцию в нескольких строках, можно в конец каждой предшествующей строки вставить символ обратного олеша, который будет служить признаком, что инструкция продолжается на следующей строке.
Так как существует возможность использовать круглые скобки для заключения длинных конструкций, символы обратного олеша практически никогда не используются, ° Литералы строк в тройных кавычках могут располагаться в нескольких строках. Очень длинные строковые литералы можно разместить в нескольких строках — блоки строк в тройных кавычках, с которыми мы встретились в главе 7, предназначены именно для этих целей. ° Другие правила.
Существует еще несколько моментов, которые хотелось бы упомянуть. Хотя это и необычно, инструкции можно завершать точкой с запятой — иногда это соглашение используется, чтобы компактно разместить несколько инструкций в одной строке.
Кроме того, в любом месте в файле могут присутствовать пустые строки и комментарии. Комментарии (которые начинаются с символа я) простираются до конца строки. Несколько специальных случаев Ниже показано, как выглядит инструкция при применении правила использования скобок.
Конструкции, заключенные в скобки, могут занимать произвольное число строк: с = ("Вооо, ГВап", 'ОВ1у' ] В Открытая пара скобок иоивт окввтывать несколько строк Этот прием также можно использовать с круглыми скобками: выражения, аргументы функций, заголовки функций (глава 15) и т. д. Прн желании можно использовать символы обратного олеша, но этот прием редко используется на практике: ат а == Ь апс с == О апб 1 о == е апо т == д.' рг1пт 'о1се' в Сииволы обратного спеша позволяют проролшить.. Поскольку любое выражение можно заключить в круглые скобки, то лучше использовать их при необходимости расположить инструкцию в нескольких строках: тг (а == Ь апб с == О апб б == е апс е == Г): згз Проверка истинности ргтпт 'пеи' а Но круглив скобки позволяют то ке самое Еще один специальный случай: в языке Рус)топ допускается записывать в одной строке несколько несоставных инструкций (т.
е. инструкций, которые не имеют вложенных инструкций), разделяя их точками с запятой. Некоторые программисты используют эту возможность для экономии пространства в файле, однако удобочитаемость будет выше, если в каждой строке размещать только одну инструкцию: х = 1; у = 2, ргтпт х Ф Несколвко простак инструкций в одггой строке И, наконец, Ру()топ позволяет располагать тело составной инструкции в одной строке с заголовком при условии, что тело образует простая (несоставная) инструкция.
Вам часто придется видеть следующий вариант использования простых инструкций с единственным условием и действием: тт 1: ргтпт 'Пе11о' а ПРостая инструкция в строке заголовка Некоторые из этих специальных случаев можно комбинировать между собой, чтобы писать программный код, который будет сложно читать, но я не рекомендую поступать так — старайтесь записывать по одной инструкции в строке и выравнивайте все блоки, кроме простейших. Когда вам придется вернуться к своей программе спустя полгода, вы будете рады, что поступали именно так.
Проверка истинности Понятия сравнения, равенства и значений истинности были введены в главе 9. Инструкция (г — это первая инструкция на нашем пути, которая использует результаты проверки, поэтому здесь мы подробнее поговорим о некоторых из этих идей. В частности о том, что логические операторы в языке РусЬоп несколько отличаются от аналогичных операторов в таких языках как С. В языке Ру(йоп: ° Любое число, не равное нулю, или непустой объект интерпретируется как истина. ° Числа, равные нулю, пустые объекты и специальный объект Нове интерпретируются как ложь. ° Операции сравнения и равенства применяются к структурам данных рекурсивно.
° Операции сравнения и равенства возвращают значение Тгце или Ра1ве (которые представляют собой версии чисел 1 и 0). ° Логические операторы апб и от возвращают истинный или ложный объект-операнд. В двух словах, логические операторы используются для объединения результатов других проверок. В языке Ру1)топ существует три логических оператора: Глава)2, Условная инструкция И Х вп() У Истина, если оба значения Х и У истинны. Х ог У Истина, если любое из значений Х или У истинно.