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

Лутц М. - Изучаем Python (1077325), страница 58

Файл №1077325 Лутц М. - Изучаем Python (Лутц М. - Изучаем Python) 58 страницаЛутц М. - Изучаем Python (1077325) страница 582018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

к. он может привести к сбоям — циклические структуры могут вызывать неожиданное зацикливание программного кода, если вы не все предусмотрели. Например, некоторые программы хранят список или словарь уже посещенных элементов, с помощью которого обнаруживают попадание в цикл. Советы по устранению этих неполадок приводятся в упражнениях к первой части книги, в главе 3; кроме того, решение проблемы приводится также в конце главы 21, в программе гегоадак.ру. Не создавайте циклические ссылки, если они действительно не нужны.

Иногда бывают серьезные основания для создания циклических ссылок, но если ваш программный код не предусматривает их обработку, вам не следует слишком часто заставлять свои объекты ссылаться на самих себя. Т = (1, 2, 3) Т[2! = 4 в Овибка.' т = т[:2] ч (4,) Ф Все в порядке: Т1, 2, 4) Это может показаться лишней работой, но выигрыш в том, что неизме- няемые объекты, такие как кортежи и строки, не порождают приве- денных выше проблем, т.

к. они не могут изменяться непосредственно и не подвержены, как списки, побочным эффектам такого рода. Неизменяемые типы не могут изменяться непосредственно Наконец„вы не можете изменять неизменяемые объекты непосредственно. Вместо этого создайте новый объект — с помощью операций извлечения среза„конкатенации и т. д., и присвойте, если это необходимо, первоначальной переменной: В заключение В заключение В этой главе были исследованы последние два базовых типа объектов— кортежи и файлы.

Мы узнали, что кортежи поддерживают все операции, обычные для последовательностей, но не имеют методов и не позволяют выполнять изменения непосредственно в объекте, потому что они относятся к категории неизменяемых объектов. Мы также узнали, что объекты-файлы возвращаются функцией осел и предоставляют методы чтения и записи данных.

Мы исследовали проблему преобразования объектов РуФЬоп в строку и обратно, чтобы иметь возможность сохранять нх в файле, и познакомились с модулями в1ск1е и зт шов, реализующими дополнительные возможности (сериализация объектов и работа с двоичными данными). В заключение мы рассмотрели некоторые свойства, общие для всех типов объектов (например, разделяемые ссылки) и прошлись по списку часто встречающихся ошибок (ловушек), связанных с типами объектов. В следующей части мы обратимся к теме синтаксиса операторов в языке Ру(Ьоп — здесь мы исследуем все основные процедурные операторы. Следующая глава открывает эту часть книги с введения в общую синтаксическую модель языка Ру(Ьоп, которая применима ко всем типам операторов.

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

Какое значение используется по умолчанию в аргументе режима обработки файла в функции орел 7 4. Каким модулем можно воспользоваться для сохранения объектов РуФЬоп в файл, чтобы избежать выполнения преобразований объектов в строки вручную? б. Как можно выполнить копирование всех частей вложенной структуры в одной инструкции? 6. В каких случаях интерпретатор рассматривает объект как» истину» 2 7. В чем состоит ваша цель7 266 Глава 9. Кортежи, файлы и все остальное Ответы 1. Встроенная функция 1ел возвращает длину (количество содержащихся элементов) любого контейнерного объекта, включая и кортежи. Это — встроенная функция, а не метод и потому может применяться к самым разным типам объектов.

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

3. Аргумент режима открытия Файла в функции орел по умолчанию имеет значение ' г', т. е. файл открывается для чтения. Чтобы открыть текстовый файл для чтения, достаточно передать функции одно только имя файла. 4. Для сохранения объектов Ру1Ьоп в файле можно воспользоваться модулем р1сх1в, что устранит необходимость явного преобразования объектов в строки.

Модуль втгоот позволяет вЫПОЛНЯтъ похожие действия, но в предположении, что данные хранятся в файле в упакованном двоичном Формате. б. Чтобы скопировать все вложенные части структуры Х, можно импортировать модуль сору и вызвать функцию сору. Оеерсору(Х). Однако такой способ редко можно встретить на практике — ссылок обычно бывает достаточно и, как правило, в большинстве случаев достаточно бывает создать поверхностную копию (например, зс1в1(;), а01ст.саРУ()) б.

Объект рассматривается как»истина», если он является либо ненулевым числом, либо непустым объектом коллекции. Встроенные слова Тгое и Еа1ве по сути являются предопределенными именами числовых значений 1 и О соответственно. 7. В число допустимых ответов входят»Изучить язык Ру1)топ», «Перейти к следующей части книги» или »Найти святую чашу Грааля».

Упражнения ко второй части В этом разделе вам предлагается снова пройтись по основам встроенных объектов. Как и прежде, вам попутно могут встретиться новые понятия, поэтому обязательно сверьтесь с ответами в приложении В, ко- Закрепление пройденного 267 гда закончите (и даже если еще не закончили). Если у вас не так много свободного времени, я рекомендую начать с упражнений 10 и 11 (так как они наиболее практичные), а затем, когда появится время, пройти все упражнения — от первого до последнего. Во всех упражнениях необходимо знание фундаментальных сведений, поэтому постарайтесь выполнить как можно большую их часть.

1. Основы. Поэкспериментируйте в интерактивной оболочке с наиболее часто используемыми операциями, которые вы найдете в таблицах второй части. Для начала запустите интерактивный сеанс работы с интерпретатором РуФЬоп, введите все нижеследующие выражения и попробуйте объяснить происходящее: 2 . ° 1б 2г'5, 2гг50 "ярая" г "ессв" 5 = "Пав" "еббв " г 5 5 * 5 5[:О] "Огееп Ьв ала Вв" Ь ("еббя". 5) ('х',)[0] ( ' х ', ' у ' )[ 1 ] (. = [ 1, 2, 3] + [4, 5, б] Ц:], Ц:О], Ц -2), Ь[-2;] ([1,2,3] + [4,5,5])[2'.4] (([2]. ([3]] Ь геуегве( ); Ь.яег(( ); (яшеех(4) ('а';1, 'Ь':2)['Ь'] 0 = ('х';1, 'у':2, 'г':3) О['уг'] = 0 О['х'] + О['е'] 0[(1,2,3)] = 4 О.хеув( ), О.уа1еев( ), О.лав Кеу((1,2,3)) [[]], ("',[],( ),(),Иоле] 2.

Индексирование и извлечение среза. В интерактивной оболочке создайте список с именем [, который содержит четыре строки или числа (например, [ = [О, 1, 2, 3]). Затем исследуйте следующие случаи; а. Что произойдет, если попытаться получить доступ к элементу, индекс которого выходит за пределы списка (например, Ц 4])? Ь. Что произойдет, если попытаться извлечь срез, выходящий за пределы списка(например, ь (-1000: 100) )? с. Наконец, как отреагирует интерпретатор на попытку извлечь последовательность в обратном порядке, когда нижняя граница больше верхней (например, Ц3:1])? Подсказка: попробуйте 268 Глава 9. Кортежи, файлы и зсе остальное выполнить операцию присваивания такому срезу (Ь[3:1) ['7')) и посмотреть, куда будет помещено значение, Как вы думаете, это то же самое явление, что и при попытке извлечь срез, выходящий за пределы списка2 3.

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

Используйте ее для удаления элемента вашего списка (например, ле1 [[О)). Что произойдет, если попробовать удалить целый срез (ое1 1[1: ))7 Что произойдет, если срезу присвоить объект, который не является последовательностью ([[1: 2] = 1)7 4. Кортежи. Введите следующие строки: »> Х = 'зраэ' »> У = 'ерзз' >»Х, У" У, Х Как вы думаете, что произойдет с переменными после выполнения этой последовательности действий? 5. Ключи словарей.

Рассмотрите следующий фрагмент: »> 0 = () »> 0[1] = 'в' »> 0[2] = 'Ь' Вы знаете, что словари не поддерживают доступ к элементам по смещениям; попробуйте объяснить происходящее здесь. Может быть, следующий пример прояснит ситуацию7 (Подсказка: к какой категории типов относятся строки, целые числа и кортежи2) »> 0[(1, 2, 3)] ° 'с' »> 0 (1: 'а'. 2: 'Ь'. (1, 2.

3) 'с') 6. Индексирование словарей. Создайте словарь с именем ]> и с тремя записями для ключей '3', 'Ь' и 'с'. Что произойдет, если попытаться обратиться к элементу с несуществующим ключом (О( ' О ' ) )? Что сделает интерпретатор, если попробовать присвоить значение несуществующему ключу(О[ 'о'] = 'зраа')? Как это согласуется с операциями доступа и присваивания элементам списков при использовании индексов, выходящих за их пределы7 Не напоминает ли вам такое поведение правила, применяемые к переменным7 7.

Общие операции. Получите в интерактивной оболочке ответы на следующие вопросы: Закрепление пройденного 2бй а. Что произойдет, если попытаться использовать оператор + с операндами различных типов (например, строка+список, список+кортеж)? Ь. Будет ли работать оператор +, когда один из операндов является словарем7 с. Будет ли работать метод аррепз со списками и со строками? Мож- но ли использовать метод аеуз со списками7 (Подсказка: что предполагает метод аррепз о заданном объекте7) г).

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

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

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

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