Саммерфилд - Программирование на Python 3 (1077331), страница 5
Текст из файла (страница 5)
Когда в 1)Х1Х программа запускается в консоли„она читает первые два байта.' Если зто последовательность АЯС11-символов р!, командная оболочка предполагает, что файл должен выполняться интерпретатором, а первая строка файла определяет, какой интерпретатор должен использоваться. Данная строка называется строкой зЬеЬапя (выполняется командной оболочкой) и всегда должна быть первой строкой в файле. Строка зЬеЬапя обычно записывается в одной из двух форм: з'/езг/шп/ругпоез илн: «'/езг/сга/еп» ругесрз В первом случае она определяет используемый интерпретатор. Вторая форма может потребоваться для программ на языке Ру1Ьоп, запускаемых веб-сервером, хотя абсолютный путь в каждом конкретном случае может отличаться от того, что показан здесь.
Во втором случае будет использован первый интерпретатор руФЬопЗ, найденный в текущем окружении. Вторая форма является более универсальной, потому что допускает, что интерпретатор РуФЬоп 3 может находиться не в каталоге /изг/Ь(л (то есть он может находиться, например, в каталоге /изг/1оса1/Ь)п или может быть установлен в каталоге ЗНОНЕ). Строка зЬеЬапя не требуется (хотя и не мешает) в операционной системе уу'1пЙозуз; все примеры в етой книге имеют строку зЬеЬапя во второй ее форме, хотя она может быть и не приведена, Обратите внимание: когда мы говорим о системах 1)Ы1Х, предполагается, что выполняемый файл РуЬЬоп 3 (или символическая ссылка на него) находится в пути поиска РАТН и имеет имя руИопЗ.
Если это не так, вам потребуется изменять строки зЬеЬапя в примерах, подставив туда корректное имя файла (или корректное имя и путь, если вы пред- Взаимодействие между пользователем н консолью обслуживается программой «командной оболочки». Нзс не интересуют различия, существующие между консолью н командной оболочкой, поэтому этн термины мы будем считать взаимозаменяемыми. 27 зЗолотой запаса РутЬоп Среда 1Р1Е обеспечивает три ключевые возможности: ввод выражений и программного кода на языке РуФоп с получением результатов прямо в командной оболочке РуФЬоп; предоставляет редактор программного кода с подсветкой синтаксиса языка Ру$Ьоп и поддержкой функции оформления отступов и отладчик, который может использоваться в режиме пошагового выполнения программного кода, облегчая поиск и устранение ошибок.
Командная оболочка Ру$Ьоп особенно удобна при опробовании простых алгоритмов, фрагментов программного кода и регулярных выражений и может использоваться как очень мощный и гибкий калькулятор. Для языка Ру$Ьоп существуют и другие среды разработки, но мы рекомендуем использовать ПН Е вЂ” по крайней мере на начальном этапе. При желании для создания программ вы можете использовать простой текстовый редактор, а отладку выполнять посредством инструкций рылт().
Интерпретатор Ру1Ьоп можно запускать самостоятельно, не указывая ему программу на языке РуСЬоп. В этом случае интерпретатор запускается в интерактивном режиме. В этом режиме можно вводить инструкции языка РуФЬоп и получать те же результаты, что и в командной оболочке Ру1Ьоп среды 11П Е, при этом будет выводиться все та же строка приглашения к вводу»>. Но пользоваться ПЗ1 Е гораздо проще, поэтому мы рекомендуем применять ее для проведения экспериментов с фрагментами программного кода. Короткие интерактивные примеры, которые приводятся в книге, могут вводиться как в интерпретаторе РуФЬоп, работающем в интерактивном режиме, так и в командной оболочке РуФЬоп, в среде 101 Е. Теперь мы знаем, как создавать и запускать программы на языке Ру$Ьоп, но совершенно очевидно, что мы далеко не уедем, зная всего одну функцию. В следующем разделе мы существенно расширим наши познания о языке РуФоп.
Они позволят нам писать пусть и короткие, но уже полезные программы на языке РуФЬоп, как те, что приводятся в последнем разделе. аЗолотой запас» РуФоп В этом разделе мы узнаем о восьми ключевых составляющих языка Ру1Ьоп, а в следующем разделе увидим, как используются эти составляющие на примере пары маленьких, но практичных программ. Обсуждение описываемых здесь тем ведется не только в этой главе, поэтому, если вы почувствуете, что информации не хватает или что-то выглядит слишком громоздко, воспользуйтесь ссылками вперед, содержанием или предметным указателем; практически всегда обнаружится, что РуФЬоп предоставляет нужную вам особенность, к тому же в более краткой и выразительной форме, чем показано здесь, и, кроме того, обнаружится еще много чего вокруг. гв Глава 1, Быстрое введение а процедурное программирование Составляющая )у)'1: типы данных Одна из фундаментальных особенностей любого языка программирования заключается в способности представлять элементы данных.
Язык РуФ]топ предоставляет несколько встроенных типов данных, но пока интерес для нас представляют только два из них. В языке РуФЬоп для представления целых чисел (положительных и отрицательных) используется тип 101, а для представления строк (последовательностей символов Юникода) используется тип этг.
Ниже приводятся несколько примеров литералов целых чисел и строк: -973 210624563337114373395836055367340864637790190801098222508621955072 0 "1пттптте1у сеаапа!пд" '6[сап СгатсЫеу' 'Ссюттче1у абус+©' Между прочим, второе число в этом примере — это число 2"' — размер целых чисел в языке Руб]топ ограничивается только объемом памяти, имеющейся в компьютере, а не фиксированным числом байтов. Строки могут ограничиваться кавычками или апострофами при условии, что с обоих концов используются однотипные кавычки, а поскольку для представления строк Ру8Ьоп использует Юникод, строки могут содержать не только символы из набора АЯСП, как показано в предпоследней строке примера. Пустые строки — это просто кавычки, внутри которых ничего нет.
Для доступа к элементам последовательностей, таким как символы в строках, в языке РуФ]топ используются квадратные скобки ([]). Например, находясь в командной оболочке РуФоп (когда интерпретатор запущен в интерактивном режиме или в среде [П[ Е) мы можем ввести следующее — вывод командной оболочки Ру$]топ выделен хирнвн шрифтом, а то, что вводится с клавиатуры — обачньм моношириннам шрифтом: »> "Нага т[аеэ"[5] 'т' »> "дтгатте"[О] 'д Традиционно в командной оболочке Ру8]топ строка приглашения к вводу имеет вид»>, но ее можно изменить.
Квадратные скобки могут использоваться для доступа к элементам любых типов данных, являющихся последовательностями, таких как строки и списки. Такая непротиворечивость синтаксиса — одно из оснований красоты языка РуФЬоп. Обратите внимание: индексы в языке РуФЬоп начинаются с О. В РуФЬоп тип эт г и элементарные числовые типы, такие как тат„являются неизменяемыми, то есть однажды установив значение, его уже нельзя будет изменить. На первый взгляд, такое ограничение кажется «Золотой запас> Рут)топ странным, но на практике это не влечет за собой никаких проблем. Единственная причина, по которой об этом было упомянуто здесь, заключается в том, что имея возможность с помощью квадратных скобок извлекать отдельные символы, мы не имеем возможности изменять их.
(Обратите внимание: в языке Ру9Ьоп под символом понимается строка, имеющая длину, равную 1.) Для преобразования элемента данных из одного типа в другой мы можем использовать конструкцию дагагуре(1(еш). Например: »> тет("45") 45 »> етг(912) '912' Преобразование тле() терпимо относится к начальным и конечным пробелам, поэтому оператор 1пт("45" ) также будет работать. Преобразование ее г() может применяться практически к любым типам данных. Мы легко можем наделять поддержкой преобразований зтг(), (пт() и других преобразований свои собственные типы данных, если в этом имеется какой-то смысл; это будет показано в главе 6.
Если преобразование терпит неудачу, возбуждается исключение — мы коротко затронем тему обработки исключений, когда будем рассматривать составляющую №б, а полное обсуждение исключений приводится в главе 4. Строки и целые числа подробно будут обсуждаться в главе 2 наряду с другими встроенными типами данных и некоторыми другими типами из стандартной библиотеки Ру5Ьоп. В этой главе также будут рассматриваться операции, применимые к неизменяемым последовательностям, таким как строки. Составляющая й'2: ссылки на объекты Теперь, зная о существовании некоторых типов данных, нам необходимо рассмотреть переменные, которые хранят зти данные.
В языке Ру1)топ нет переменных как таковых — вместо них используются ссылки на объекты. Когда речь заходит о неизменяемых объектах, таких как (лт или этг, между переменной и ссылкой на объект нет никакой разницы. Однако различия начинают проявляться, когда дело доходит до изменяемых объектов, но эти различия редко имеют практическое значение. Мы будем использовать термины переменка и ссылка на объект как взаимозаменяемые. Взгляните на следующие крошечные примеры, а затем мы обсудим их подробнее. х = "Ыее" у = "9«ееп" г=х «Золотой запас» Ру(Ъоп Имена, используемые для идентификации ссылок на объекты (называются идентификаторами), имеют определенные ограничения.