М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 81
Текст из файла (страница 81)
Общие операции. Получите в интерактивной оболочке ответы на следующие вопросы:•• Что произойдет, если попытаться использовать оператор + с операндамиразличных типов (например, строка+список, список+кортеж)?•• Будет ли работать оператор +, когда один из операндов является словарем?•• Будет ли работать метод append со списками и со строками? Можно ли использовать метод keys со списками? (Подсказка: что предполагает методappend о заданном объекте?)•• Наконец, какой тип объекта будет получен, когда операция конкатенации применяется к двум спискам или двум строкам?8. Индексирование строк.
Определите строку S из четырех символов: S =“spam”. Затем введите следующее выражение: S[0][0][0][0][0]. Можете ли выобъяснить, что произошло на этот раз? (Подсказка: не забывайте, строки –это коллекции символов, а символы в языке Python представлены односимвольными строками.) Будет ли это выражение работать, если применить егок списку, такому как [‘s’, ‘p’, ‘a’, ‘m’]? Почему?9. Неизменяемые типы. Определите еще раз строку S из четырех символов:S = “spam”.
Напишите операцию присваивания, которая изменила бы строку на “slam”, используя только операции извлечения среза и конкатенации.Возможно ли выполнить то же самое действие с использованием операцийиндексирования и конкатенации? С помощью присваивания по индексуэлемента?10. Вложенные структуры. Создайте структуру данных для представлениявашей личной информации: имя (имя, фамилия, отчество), возраст, должность, адрес, электронный адрес и номер телефона. При построении структуры вы можете использовать любые комбинации встроенных объектов320Глава 9. Кортежи, файлы и все остальное(списки, кортежи, словари, строки, числа). Затем попробуйте обратиться к отдельным элементам структуры по индексам. Являются ли какиенибудь объекты более предпочтительными для данной структуры?11.
Файлы. Напишите сценарий, который создает и открывает для записи новый файл с именем myfile.txt и записывает в него строку “Hello file world!”.Затем напишите другой сценарий, который открывает файл myfile.txt,читает и выводит на экран его содержимое. Запустите поочередно эти сценарии из командной строки. Появился ли новый файл в каталоге, откудабыли запущены сценарии? Что произойдет, если указать другой каталогв имени файла, которое передается функции open? Примечание: методы записи в файлы не добавляют символ новой строки к записываемым строкам.Добавьте символ \n явно в конец вашей строки, если хотите получить в файле полностью завершенную строку.Часть III.Инструкции и синтаксисГлава 10.Введение в инструкции языка PythonТеперь, когда вы познакомились с базовыми встроенными типами объектовязыка Python, мы начинаем исследование фундаментальных форм инструкций. Как и в предыдущей части книги, мы начнем с общего представления синтаксиса инструкций и затем, в нескольких следующих главах, более подробнорассмотрим конкретные инструкции.Выражаясь простым языком, инструкции – это то, что вы пишете, чтобы сообщить интерпретатору, какие действия должна выполнять ваша программа.Если программа «выполняет какие-то действия», то инструкции – это способуказать, какие именно действия должна выполнять программа.
Python – этопроцедурный язык программирования, основанный на использовании инструкций; комбинируя инструкции, вы задаете процедуру, которую выполняет интерпретатор в соответствии с целями программы.Структура программы на языке PythonДругой способ понять роль инструкций состоит в том, чтобы вновь вернуться к иерархии понятий, представленной в главе 4, в которой рассказывалосьо встроенных объектах и выражениях, управляющих ими.
Эта глава рассматривает следующую ступень иерархии:1. Программы делятся на модули.2. Модули содержат инструкции.3. Инструкции состоят из выражений.4. Выражения создают и обрабатывают объекты.Синтаксис языка Python по сути построен на инструкциях и выражениях. Выражения обрабатывают объекты и встраиваются в инструкции. Инструкциипредставляют собой более крупные логические блоки программы – они напрямую используют выражения для обработки объектов, которые мы рассматривали в предыдущих главах. Кроме того, инструкции – это место, где создаютсяобъекты (например, в инструкциях присваивания), а в некоторых инструкциях создаются совершенно новые виды объектов (функции, классы и так далее).324Глава 10. Введение в инструкции языка PythonИнструкции всегда присутствуют в модулях, которые сами управляются инструкциями.Инструкции в языке PythonВ табл. 10.1 приводится набор инструкций языка Python.
В этой части книгирассматриваются инструкции, которые в таблице расположены от начала и доинструкций break и continue. Ранее неофициально вам уже были представленынекоторые из инструкций, присутствующих в табл. 10.1. В этой части книгибудут описаны подробности, опущенные ранее; вашему вниманию будут представлены остальные процедурные инструкции языка Python, а также будетрассмотрена общая синтаксическая модель. Инструкции, расположенныев табл. 10.1 ниже, имеют отношение к крупным блокам программы – функциям, классам, модулям и исключениям, и заключают в себе крупные понятияпрограммирования, поэтому каждой из них будет посвящен отдельный раздел.Более экзотические инструкции, такие как del (которая удаляет различныекомпоненты), раскрываются далее в книге или в стандартной документациипо языку Python.Таблица 10.1.
Инструкции языка PythonИнструкцияРольПримерПрисваиваниеСоздание ссылокa, *b = ‘good’, ‘bad’, ‘ugly’Вызовы и другиевыраженияЗапуск функцийlog.write(“spam, ham”)Вызов функцииprintВывод объектовprint(‘The Killer’, joke)if/elif/elseОперация выбораif “python” in text:print(text)for/elsewhile/elsepassbreakОбход последовательности в циклеfor x in mylist:Циклы общего назначенияwhile X > Y:Пустая инструкциязаполнительwhile True:Выход из циклаwhile True:print(x)print(‘hello’)passif exittest(): breakcontinueПереход в начало циклаwhile True:defСоздание функцийи методовdef f(a, b, c=1, *d):Возврат результатаdef f(a, b, c=1, *d):if skiptest(): continuereturnprint(a+b+c+d[0])return a+b+c+d[0]325Структура программы на языке PythonИнструкцияРольПримерyieldФункции-генераторыdef gen(n):for i in n: yield i*2globalПространства именx = ‘old’def function():global x, y; x = ‘new’nonlocalПространства имен (3.0+) def outer():x = ‘old’def function():nonlocal x; x = ‘new’importДоступ к модулямimport sysfromДоступ к атрибутаммодуляfrom sys import stdinclassСоздание объектовclass Subclass(Superclass):staticData = []def method(self): passtry/except/finally Обработка исключенийtry:action()except:print(‘action error’)raiseВозбуждение исключений raise endSearch(location)assertОтладочные проверкиassert X > Y, ‘X too small’with/asМенеджеры контекста(2.6+)with open(‘data’) as myfile:delУдаление ссылокdel data[k]process(myfile)del data[i:j]del obj.attrdel variableВ���������������������������������������������������������������������������табл������������������������������������������������������������������������������������������������������������������������������������������������. ��������������������������������������������������������������������10.1 перечислены разновидности инструкций в версии Python���������������������������� 3.0 – элементы программного кода, каждый из которых имеет свой характерный синтаксис и назначение.
Ниже приводятся несколько замечаний к таблице:•• Инструкции присваивания могут принимать различные синтаксическиеформы, которые описываются в главе 11: простое, присваивание последовательностей, комбинированное присваивание и другие.•• В версии 3.0 print не является ни зарезервированным словом, ни инструкцией – это встроенная функция.
Однако она практически всегда выполняется как инструкция (то есть занимает отдельную строку в программе),326Глава 10. Введение в инструкции языка Pythonпоэтому ее обычно воспринимают как инструкцию. Мы поближе познакомимся с функцией print в главе 11.•• Начиная с версии 2.5 yield в действительности является выражением, а неинструкцией. Как и функция print, это выражение обычно занимает отдельную строку, и потому оно было включено в табл. 10.1.