Лутц М. - Изучаем Python (1077325), страница 165
Текст из файла (страница 165)
771 В заключение Недавно появившаяся в языке Ру»Ьоп система подготовки дистрибутивов «еддз» представляет собой другую альтернативу, которая позволяет учитывать зависимости, — дополнительную информацию о ней ищите в Сети. Способы оптимизации В главе 2 была описана система Рзусо, позволяющая оптимизировать программы по скорости выполнения. Она предоставляет динамический компилятор, выполняющий трансляцию байт-кода в двоичный машинный код.
Кроме того имеется система ЯЬебзЬ1п, которая представляет собой транслятор исходных текстов с языка Ру(Ьоп на язык С++. Иногда вам могут встретиться файлы .руо с оптимизированным байт-кодом, которые создаются при запуске интерпретатора РуФЬоп с ключом командной строки -0 (обсуждается в главе 18), но так как этот способ обеспечивает весьма скромное увеличение производительности, он обычно не используется. Наконец, для повышения производительности можно отдельные части своих программ перенести на компилирующий язык программирования, такой как С, — подробнее о расширениях на языке С рассказывается в книге «Ргобгаппп1пд РузЬоп» и в стандартных руководствах по языку Ру1Ьоп. Вообще говоря, скорость работы интерпретатора РуФЬоп постоянно увеличивается, поэтому старайтесь использовать самую свежую его версию, когда это возможно (например, версия Ру1Ьоп 2.8 обеспечила прирост производительности на 15-20 процентов по сравнению с версией 2.2).
Другие советы порааработке крупкых проектов Кроме всего прочего, в этой книге мы познакомились с различными особенностями языка, удобство которых особенно ярко проявляется при работе с крупными проектами. Среди них: пакеты модулей (глава 20); исключения на основе классов (глава 28); псевдочастные атрибуты класса (глава 25); строки документирования (глава 14); файлы с настройками пути поиска модулей (глава 18); сокрытие имен, импортируемых инструкцией ггсз ° с помощью списков а11 н имен в формате х (глава 21); добавление программного кода самопроверки с использованием приема лазе == ' за1л ' (глава 21); использование общих правил проектирования при создании функций и модулей (главы 16, 17 и 21) н т.
д. Узнать о других общедоступных разнообразных инструментах разработки можно на страницах веб-сайта Уап1$з оГ Рагпаззпз. В заключение Эта глава завершила часть книги, описывающую исключения (и всю книгу в целом) кратким обзором типичных случаев использования исключений и инструментальных средств разработки. Поскольку это конец книги, глава заканчивается единственным контрольным вопросом. 772 Глава 29. Использование исключений Как обычно, обязательно выполните упражнения к этой части, чтобы закрепить знания, полученные в последних нескольких главах.
В следующих далее приложениях даются подсказки по установке Ру1Ьоп и ответы к упражнениям, Чтобы получить представление о том, что читать после этой книги, просмотрите список литературы, рекомендуемой для дальнейшего чтения в предисловии. Вы достигли того момента, когда язык РуФЬоп действительно становится увлекательным, но на этом данная книга заканчивается. Теперь вы неплохо подготовлены к изучению других книг и ресурсов, которые помогут вам решать задачи прикладного программирования, такие как создание программ с графическим интерфейсом, разработка веб-сайтов, интерфейсов к базам данных и многие другие.
Удачи вам в вашем путешествии и, конечно, «всегда смотрите на светлую сторону жизни»! Закрепление пройденного Контрольные вопросы 1. (Этот вопрос уже задавался в контрольных вопросах к главе 1 — видите, я же говорил, что зто будет просто.) Почему слово врат так часто появляется в примерах в этой книгеу Ответы 1.
Язык Ру(Ьоп получил свое название в честь английской комик- группы Монти Пайтона (МопФу РУФЬоп) (согласно опросам, которые я проводил среди своих студентов, это «самая большая тайна» амире РуФоп!). Слово «враш» взято из пародии Монти Пайтона (МопФу РусЬоп), где герои сериала пытаются заказать блюдо в кафетерии, а их заглушает хор викингов, поющих песню о консервах (враш). И если бы я мог вставить сюда аудиофрагмент из этой песни в качестве заключительных титров, я бы сделал это...
Упражнения к седьмой части Мы достигли конца этой части книги, поэтому настало время выполнить несколько упражнений на применение исключений, чтобы попрактиковаться в основах. Исключения действительно являются очень простым инструментом — если вы пользуетесь ими, значит вы владеете ими в полной мере. Решения вы найдете в приложении В, в разделе «Часть ЧП, Исключения и инструменты». 1. сгу/ехсерк Напишите функцию с именем сорэ, которая при вызове явно возбуждает исключение 1лсехЕгссс.
Затем напишите другую функцию, которая вызывает функцию оорв внутри инструкции С гу/ Закрепление пройденного ??з ехсерг, которая перехватывает ошибку. Что произойдет, если изменить функцию оорз так, чтобы вместо 1пбехЕггог она возбуждала исключение КеуЕггог? Где располагаются имена КеуЕггог и 1поехЕггог? (Подсказка: вспомните, что все простые несоставные имена находятея в одной из четырех областей видимости согласно правилу ЕЕОВ.) 2.
Объекты исключений и списки. Измените функцию оорз, которую вы только что написали так, чтобы она возбуждала ваше собственное исключение с именем МуЕггог и передавала бы дополнительные данные вместе с исключением. Вы можете определеить свое исключение на основе строки или класса. Затем расширьте инструкцию ггу в функции, которая вызывает функцию оорз, так чтобы кроме исключения 1пбехЕггог она перехватывала бы еще и это исключение, извлекала бы дополнительные данные и выводила бы их на экран. Наконец, если вы испольэовали исключение на основе строки, вернитесь назад и измените исключение, так чтобы оно было основано на классе, — что теперь будет передаваться обработчику в виде дополнительных данных? 3. Обработка ошибок. Напишите функцию зэке(гепе.
*агре), которая запускает указанную функцию с помощью функции зрр1у (или с использованием более нового синтаксиса вызова *пане), перехватывает любые исключения, возникающие в ходе выполнения этой функции и выводит информацию об исключении с использованием атрибутов ехе Гуре и ехс чз1ее модуля зуз (или с помощью более современнол функции зуз. ехе шго). Затем с помощью своей функции ззге запустите функцию оорз из упражнения 1 или 2.
Поместите функцию зз1е в модуль с именем гоо1з ру и передайте ей функцию оерз в интерактивном режиме. Какие сообщения об ошибках вы получили? Наконец, расширьте свою функцию за1е так, чтобы при возникновении исключения она выводила содержимое стека вызовов с помощью встроенной функции ртпг ехе, расположенной в стандартном модуле ггзсеЬаеК (за дополнительной информацией обращайтееь к руководству по библиотеке языка Ру$Ьоп). 4. Примеры для самостоятельного изучения.
В конец Приложения В я добавил несколько примеров сценариев, разработанных в ходе выполнения упражнений моими студентами, чтобы вы могли самостоятельно изучить и опробовать их, попутно изучая набор стандартных руководств по языку Руь)«оп. Эти примеры не содержат описаний, и в них используются инструменты из стандартной библиотеки языка Ру(Ьоп, которые вам потребуется отыскать. Для многих читателей эти примеры помогут увидеть, как концепции, которые мы обсуждали в этой книге, объединяются в реальных программах. Если эти примеры возбудят у вас интерес, вы сможете отыскать множество более реалистичных примеров программ на языке Руъпоп в последующих книгах, таких как «Ргоягаппп1пя РуФоп», и в Сети.
Установка и настройка В этом приложении описываются подробности установки и настройки в помощь тем, кто впервые делает зто. Установка интерпретатора Рутпоп Для запуска сценариев на языке Ру(поп необходимо иметь интерпретатор РуФ)юп, поэтому первым шагом к использованию этого языка является установка Ру1поп. Если он еще не установлен у вас на компьютере, вам необходимо получить и установить последнюю версию Ру1поп на свой компьютер и, возможно, настроить его. Для каждого компьютера эту процедуру необходимо выполнить всего один раз, а если вы запускаете фиксированные двоичные файлы (описываемые в главе 2), вам вообще не потребуется устанавливать интерпретатор. Возможно, Руйол уже установлен? Прежде чем приступать к установке, проверьте, возможно, на вашем компьютере уже установлена свежая версия Ру(поп.
Если вы работаете в операционной системе (апих, Мас ОВ Х или ()Н(Х, вполне вероятно, что РуФпоп уже установлен на вашем компьютере. Введите в командной строке (иногда называется окном терминала) команду ру(все и посмотрите, что произойдет. Можно попробовать поискать подкаталог ругЬоп в обычных местах — в каталогах /изг/Ып, /изг/(оса(/(ап и других.
В операционной системе Ю1пдонз поищите пункт Ру((1сп в меню кнопки Пуск (2(ай), расположенной в левом нижнем углу экрана. Если интерпретатор установлен, убедитесь, что он имеет версию 2. б или выше. Несмотря на то, что для работы с этой книгой подойдет любая достаточно свежая версия, тем не менее, для запуска некоторых примеров вам потребуется версия не ниже 2.5. ив Приложение А Где получить Ру~йоп Если вы не нашли Ру1Ьоп у себя на компьютере, вам придется установить его.
Могу вас обрадовать, Ру(Ьоп является программным обеспечением, распространяемым с открытыми исходным текстами, и его можно свободно загрузить из Сети, к тому же на большинстве платформ Ру(Ьоп устанавливается достаточно просто. Самую свежую и лучшую версию Ру1Ьоп всегда можно получить на официальном веб-сайте проекта Игр://шшш.руГЬоп.ого — воспользуйтесь ссылкой «1)ошп1оаб» (загрузить) на этой странице и выберите версию для своей платформы. Здесь вы найдете уже собранные выполняемые (достаточно распаковать и запустить) файлы дистрибутивов для ЪЧ1пбоэгз (чтобы запустить установку, достаточно щелкнуть мышью на ярлыке файла), пакеты в формате ВРМ для В(ппх (установка производится с помощью утилиты грт), дистрибутивы с полными исходными текстами (которые требуется скомпилировать, чтобы установить интерпретатор) и другие.
Ссылки на другие веб-страницы, с которых можно загрузить версии для некоторых платформ, таких как Ра1шОЯ, сотовые телефоны Мой(а и %'1пдои э МоЫ!е можно найти либо на сейте проекта Ру1Ьоп.огя, либо воспользовавшись поисковой службой Ооон!е. Интерпретатор Ру(Ьоп можно также обнаружить на компакт-дисках с дистрибутивами Ыпих, в составе некоторых программных продуктов и как приложение к некоторым книгам по языку Ру(Ьоп.