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

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

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

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

Когда в инструкции тгу перечисляются конкретные исключения, перехватываться будут только те исключения, которые были перечислены. Это не обязательно плохо, но если в процессе развития программы появится новое исключение, вам может потребоваться вернуться и добавить это исключение в список обрабатываемых в своем программном коде. Например, следующий обработчик интерпретирует исключения шуе г го г т и шуеггог2 как нормальную ситуацию, а все остальные — как ошибку. Если в будущем будет добавлено исключение шуеггогЭ, оно будет обрабатываться как ошибка, если не добавить его в список исключений: тгу; ехсерт (шуеггогт, шуеггог2): а Работает неправильно при добавлении шуеггогз а Наг ошибки е1ве: а Рассиатриваетсп как ошибка К счастью, при осторожном использовании исключений на основе классов, обсуждавшихся в главе 28, можно полностью избавиться от этой ловушки.

Как мы уже видели, если перехватывать общий суперкласс, в будущем можно будет добавлять и возбуждать более конкретные подклассы исключений без необходимости изменять список исключений в предложении ехсерт; суперкласс становится легко расширяемой категорией исключений: тгу: схссрт зиссеввевтсдсгупвше а Работает правильно при добаалвнии шуаггогЗ а нет ошибки е1ве а Рассиатриваетсп как ошибка Если вы используете иерархии исключений на основе классов, порой придется пройти длинный путь, чтобы найти оптимальное решение. Мораль этой истории состоит в том„что вам следует с особым тщанием подходить к выбору степени детализации, чтобы обработчики исключений не были как слишком универсальными, так и слишком узкоспециализированными. Политика исключений должна быть составной частью общего дизайна, особенно в крупных программах, 764 Глава 29.

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

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

В случае использования строковых исключений важно знать, что соответствие определяется с помощью операции идентичности, а не равенства. Например, предположим, что мы определили два строковых объекта, которые будут использоваться в качестве исключений: »> ехз = 'тле зрап1вл 1поош11оп' »> ех2 = 'Тое Зрап1во Тпео1в111оп' »> ехз == ех2, ехз 1в ех2 (Тгое, Еа1ве) Оператор == возвращает значение Тгое, потому что объекты имеют одинаковые значения, но оператор зз возвращает Га)зе, потому что это разные строковые объекты (предполагается, что строки имеют достаточную длину, чтобы устранить влияние внутреннего механизма кэширования строк, описанного в главе 6). Таким образом, предложение ехсер1, указывающее на тот же самый строковый объект, всегда будет считаться соответствующим: »> 1гу: га1ее ехз ехоер1 ехи рг1п1 'ро1 11' рог >1 но предложение, где указан объект с тем же значением, но не идентичный строковому объекту исключения, не будет считаться соответствующим: 765 Типичные проблемы при работе с исключениями »> тгу: гзтяе ех1 ехсерт ех2: рг1пт '8О1 11' тгясеьвсх (поят гесепт са11 !зж ).

Гт!е "<руяле!!843>", 1)пе 2, тп <вооп1е> ге!ее ех1 тпе яряптяп !воюю!топ Здесь исключение не было перехвачено, потому что объекты не идентичны. В результате исключение поднимается на верхний уровень процесса и автоматически выводится содержимое стека и текст исключения.

Однако, как я уже говорил раньше, в некоторых случаях может получаться так, что различные строковые объекты с одинаковыми значениями будут считаться идентичными из-за влияния механизма кэширования небольших строк в Руз)топ (как описывается в главе б): »> тгу: гв1зе 'ярве' ехсерт 'ярве': рг1пт ' оот 11 ' 901 1! Этот пример работает правильно, потому что две строки отображаются на один и тот же объект в каше.

Напротив, в следующем примере используются строки достаточной длины, чтобы не попасть в кэш: »> тгу: ге1зе 'эрве' ° 8 ехсерт 'ярве' . 8: рг1пс 'рот 11' Тгясеояск (поят гесепт св11 1аят): 81!е '<руяле11858>", 1тпе 2, тп <еосо1е> гя.яе ярве' 8 яравярявярявярапяряпярапяряеярве Если эти два примера кажутся вам непонятными, просто запомните: в случае применения строк в инструкциях гатяе и тгу необходимо использовать один и тот же объект, а не одно и то же значение.

Для исключений на основе классов (рекомендуемая ныне методика) все работает точно так же, но язык Ру1)топ обобщает понятие соответствия исключению, добавляя отношение к суперклассу, поэтому такой проблемы в случае с классами не наблюдается — еще одна причина использовать исключения на основе классов! Убб Глава 29.

Использование исключений Перехват ненужных исключений Пожалуй, самая типичная проблема, имеющая отношение к исключениям, связана с общими рекомендациями по проектированию, рассматривавшимися в предыдущем разделе. Старайтесь избегать использования пустых предложений ехсерс (можно перехватить такие события, как завершение программы), а также слишком узкоспециализированных предложений ехсерг (используйте суперклассы категорий, чтобы избежать проблем сопровождения в будущем, когда в программе появятся новые исключения).

Заключение по основам языка Поздравляю! Этим разделом заканчивается ваше изучение основ языка программирования РуФ)зоп. Если вы забрались так далеко, что читаете этн строки, можете смело считать себя Официальным Программистом на языке Ру1Ьоп (и можете не стесняться упоминать о знании этого языка в своих резюме). Вы уже видели почти все, что можно увидеть в самом языке, и получили знания более глубокие, чем имели многие практикующие программисты на языке Ру1)зоп в начале своего пути.

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

Это может занять немало времени. Стандартная библиотека, например, содержит сотни модулей, а разработчиками сообщества предлагается еще больше. Чтобы познакомиться со всеми этими инструментами, может потребоваться лет десять, а то и больше, особенно если учесть, что постоянно появляются новые (можете мне поверить!). Вообще говоря, Ру1Ьоп обеспечивает следующую иерархию инструментальных средств: Встроенные Встроенные типы, такие как строки, списки и словари, помогают быстро создавать несложные программы. Расширения на языке Рук)зон Для решения более сложных задач вы можете расширить возможности РуФ)зоп своими собственными функциями, модулями и классами. 767 Заключение по основам языка Компилируемые расширения Хотя мы и не касались данной темы в этой книге, тем не менее, возможности РуФЬоп можно расширять с помощью модулей, написанных на других языках программирования, таких как С или С++.

Благодаря такой многоуровневой организации инструментальных средств вы можете выбирать, насколько глубоко погружаться в эту иерархию при создании своих программ, — для простых сценариев достаточно будет встроенных средств, для крупных программ могут потребоваться дополнительные расширения на языке РуФЬоп, а компилируемые расширения — для решения необычных задач.

В этой книге мы охватили первые две категории, и этого вполне достаточно, чтобы начать писать на языке РузЬоп серьезные программы. В табл. 29.1 приводятся некоторые из встроенных и других функциональных возможностей, доступных в языке РуьЬоп, исследованием которых вы будете заниматься остаток вашей карьеры программиста на языке РуФЬоп. До настоящего момента наши примеры были очень маленькими и самостоятельными. Главная их цель состояла в том, чтобы помочь вам освоить основы. Но теперь, когда вы узнали все о базовом языке, настало время учиться использовать встроенные интерфейсы РусЬоп, чтобы быть в состоянии выполнять настоящую работу.

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

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

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

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