Главная » Просмотр файлов » М. Лутц - Изучаем Python (4-е издание)- 2011

М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 80

Файл №1126907 М. Лутц - Изучаем Python (4-е издание)- 2011 (М. Лутц - Изучаем Python (4-е издание)- 2011) 80 страницаМ. Лутц - Изучаем Python (4-е издание)- 2011 (1126907) страница 802019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 80)

Мы исследовали проблему преобразования объектов Python в строку и обратно, чтобыиметь возможность сохранять их в файле, и познакомились с модулями pickleи struct, реализующими дополнительные возможности (сериализация объектов и работа с двоичными данными). В заключение мы рассмотрели некоторые свойства, общие для всех типов объектов (например, разделяемые ссылки), и прошлись по списку часто встречающихся ошибок (ловушек), связанныхс типами объектов.В следующей части мы обратимся к теме синтаксиса инструкций в языкеPython – здесь мы исследуем все основные процедурные инструкции.

Следующая глава открывает эту часть книги с введения в общую синтаксическуюмодель языка Python, которая применима ко всем типам операторов. Однако прежде чем двинуться дальше, ознакомьтесь с контрольными вопросамик главе, а затем проработайте упражнения к этой части, чтобы коротко повторить основные понятия. Операторы в основном всего лишь создают и обрабатывают объекты, поэтому прежде чем продолжать чтение, вам необходимопроверить владение этой темой, выполнив упражнения.316Глава 9. Кортежи, файлы и все остальноеЗакрепление пройденногоКонтрольные вопросы1.

Как определить размер кортежа? Почему этот инструмент стоит обособленно?2. Напишите выражение, которое изменит первый элемент в кортеже. Кортежсо значением (4,5,6) должен стать кортежем со значением (1,5,6).3. Какое значение используется по умолчанию в аргументе режима обработкифайла в функции open?4. Каким модулем можно воспользоваться для сохранения объектов Pythonв файл, чтобы избежать выполнения преобразований объектов в строкивручную?5. Как можно выполнить копирование всех частей вложенной структурыв одной инструкции?6. В каких случаях интерпретатор рассматривает объект как «истину»?7. В чем состоит ваша цель?Ответы1.

Встроенная функция len возвращает длину (количество содержащихся элементов) любого контейнерного объекта, включая и кортежи. Это – встроенная функция, а не метод, и потому может применяться к самым разнымтипам объектов. Вообще говоря, встроенные функции и операторы выражений зачастую могут применяться к объектам самых разных типов; методы являются более узкоспециализированными инструментами, которыемогут применяться только к объектам одного типа, однако некоторые типымогут иметь одноименные методы (например, методом index обладают списки и кортежи).2. Поскольку кортежи являются неизменяемыми, в действительности ихнельзя изменить непосредственно, но можно создать новый кортеж с желаемым значением.

Первый элемент заданного кортежа T = (4,5,6) можноизменить, создав новый по частям с помощью операций извлечения срезаи конкатенации: T = (1,) + T[1:]. (Не забывайте, что в кортежах из одного элемента обязательно должна присутствовать завершающая запятая.) Такжеможно было бы преобразовать кортеж в список, выполнить необходимое изменение непосредственно в списке и произвести обратное преобразованиев кортеж, но это более дорогостоящая последовательность действий, которая редко используется на практике; просто используйте списки, если заранее известно, что может потребоваться изменить объект непосредственно.3. Аргумент режима открытия файла в функции open по умолчанию имеетзначение ‘r’, то есть файл открывается для чтения в текстовом режиме.

Чтобы открыть текстовый файл для чтения, достаточно передать функции однотолько имя файла.4. Для сохранения объектов Python в файле можно воспользоваться модулемpickle, что устранит необходимость явного преобразования объектов в строки. Модуль struct позволяет выполнять похожие действия, но в предположении, что данные хранятся в файле в упакованном двоичном формате.Закрепление пройденного3175.

Чтобы скопировать все вложенные части структуры X, можно импортировать модуль copy и вызвать функцию copy.deepcopy(X). Однако такой способредко можно встретить на практике – ссылок обычно бывает достаточно и,как правило, в большинстве случаев достаточно бывает создать поверхностную копию (например, aList[:], aDict.copy()).6. Объект рассматривается как «истина», если он является либо ненулевымчислом, либо непустым объектом коллекции. Встроенные слова True и Falseпо сути являются предопределенными именами числовых значений 1 и 0 соответственно.7. В число допустимых ответов входят «Изучить язык Python», «Перейтик следующей части книги» или «Найти святую чашу Грааля».Упражнения ко второй частиВ этом разделе вам предлагается снова пройтись по основам встроенных объектов. Как и прежде, вам попутно могут встретиться новые понятия, поэтомуобязательно сверьтесь с ответами в приложении B, когда закончите (и дажеесли еще не закончили).Если у вас не так много свободного времени, я рекомендую начать с упражнений 10 и 11 (так как они наиболее практичные), а затем, когда появится время,пройти все упражнения от первого до последнего.

Во всех упражнениях необходимо знание фундаментальных сведений, поэтому постарайтесь выполнитькак можно большую их часть.1. Основы. Поэкспериментируйте в интерактивной оболочке с наиболее частоиспользуемыми операциями, которые вы найдете в таблицах второй части. Для начала запустите интерактивный сеанс работы с интерпретаторомPython, введите все нижеследующие выражения и попробуйте объяснитьпроисходящее.

Обратите внимание, что в некоторых строках точка с запятой используется как разделитель инструкций, что позволяет уместитьв одной строке несколько инструкций, например: в строке X=1;X выполняется присваивание значения переменной и последующий его вывод (подробнее о синтаксисе инструкций рассказывается в следующей части книги).Кроме того, запомните, что запятая между выражениями обычно означаетсоздание кортежа, даже в отсутствие круглых скобок: выражение X,Y,Z –это кортеж из трех элементов, который интерпретатор выведет, заключивв круглые скобки.2 ** 162 / 5, 2 / 5.0“spam” + “eggs”S = “ham”“eggs “ + SS * 5S[:0]“green %s and %s” % (“eggs”, S)‘green {0} and {1}’.format(‘eggs’, S)(‘x’,)[0](‘x’, ‘y’)[1]318Глава 9.

Кортежи, файлы и все остальноеL = [1,2,3] + [4,5,6]L, L[:], L[:0], L[-2], L[-2:]([1,2,3] + [4,5,6])[2:4][L[2], L[3]]L.reverse( ); LL.sort( ); LL.index(4){‘a’:1, ‘b’:2}[‘b’]D = {‘x’:1, ‘y’:2, ‘z’:3}D[‘w’] = 0D[‘x’] + D[‘w’]D[(1,2,3)] = 4list(D.keys()), list(D.values()), (1,2,3) in D[[]], [“”,[],( ),{},None]2. Индексирование и извлечение среза. В интерактивной оболочке создайтесписок с именем L, который содержит четыре строки или числа (например,L = [0,1,2,3]).

Затем исследуйте следующие случаи – они могут никогда невстретиться вам на практике, но они заставят вас задуматься об основахреализации, что может оказаться полезным в практических ситуациях:•• Что произойдет, если попытаться получить доступ к элементу, индекскоторого выходит за пределы списка (например, L[4])?•• Что произойдет, если попытаться извлечь срез, выходящий за пределысписка (например, L[-1000:100])?•• Наконец, как отреагирует интерпретатор на попытку извлечь последовательность в обратном порядке, когда нижняя граница больше верхней(например, L[3:1])? Подсказка: попробуйте выполнить операцию присваивания такому срезу (L[3:1] = [‘?’]) и посмотреть, куда будет помещенозначение. Как вы думаете, это то же самое явление, что и при попыткеизвлечь срез, выходящий за пределы списка?3.

Индексирование, извлечение среза и инструкция del. Создайте другой список L с четырьмя элементами и присвойте одному из элементов пустой список (например, L[2] = []). Что произошло? Затем присвойте пустой списоксрезу (L[2:3] = []). Что случилось на этот раз? Не забывайте, что операцияприсваивания срезу сначала удаляет срез, а затем вставляет новое значениев заданную позицию.Инструкция del удаляет элемент с указанным смещением, ключом, атрибутом или именем.

Используйте ее для удаления элемента вашего списка (например, del L[0]). Что произойдет, если попробовать удалить целый срез (delL[1:])? Что произойдет, если срезу присвоить объект, который не являетсяпоследовательностью (L[1:2] = 1)?4. Кортежи. Введите следующие строки:>>> X = ‘spam’>>> Y = ‘eggs’>>> X, Y = Y, XКак вы думаете, что произойдет с переменными X и Y после выполнения этойпоследовательности действий?Закрепление пройденного3195. Ключи словарей. Рассмотрите следующий фрагмент:>>> D = {}>>> D[1] = ‘a’>>> D[2] = ‘b’Вы знаете, что словари не поддерживают доступ к элементам по смещениям; попробуйте объяснить происходящее здесь.

Может быть, следующийпример прояснит ситуацию? (Подсказка: к какой категории типов относятся строки, целые числа и кортежи?)>>> D[(1, 2, 3)] = ‘c’>>> D{1: ‘a’, 2: ‘b’, (1, 2, 3): ‘c’}6. Индексирование словарей. Создайте словарь с именем D и с тремя записямидля ключей ‘a’, ‘b’ и ‘c’. Что произойдет, если попытаться обратиться к элементу с несуществующим ключом (D{‘d’})? Что сделает интерпретатор, еслипопробовать присвоить значение несуществующему ключу (D[‘d’] = ‘spam’)?Как это согласуется с операциями доступа и присваивания элементам списков при использовании индексов, выходящих за их пределы? Не напоминает ли вам такое поведение правила, применяемые к переменным?7.

Характеристики

Тип файла
PDF-файл
Размер
12,21 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее