Лутц М. - Изучаем Python (1077325), страница 164
Текст из файла (страница 164)
Вы обнаружите, что такой простой язык, как РуФЬоп, делает решение наиболее распространенных задач намного более легким делом, чем можно было бы ожидать. Таблица 29.1. Категории инструментальных средств в языке РуЯоп Инструменты разработки крупных проектов Как только вы овладеете основами языка, вы обнаружите, что ваши программы становятся существенно больше, чем примеры, с которыми вы экспериментировали до сих пор. Для разработки крупных программ и в РуьЬоп, и в общем доступе имеется целый набор инструментов разработки. Некоторые из них вы видели в действии, некоторые я только упомянул. Чтобы помочь вам на вашем нелегком пути, я приведу краткое описание некоторых наиболее часто используемых инструментов: 768 Глава 29. Использование исключений РуРос и строка документирования Функция Пе1р и НТМ(гинтерфейсы модуля РуРос были представлены в главе 14. Модуль РуПос реализует систему документирования для модулей и объектов и интегрирован со строками документирования.
Это стандартная часть системы Ру(Ьоп, поэтому за дополнительными подробностями обращайтесь к справочному руководству по библиотеке. Кроме того, в главе 14 даются подсказки с указанием на источники документации и другие информационные ресурсы по языку РусЬоп.
РуСЬесЬег Ру(Ьоп — это динамический язык программирования, поэтому некоторые ошибки сложно обнаружить, пока программа не будет выполнена (например, синтаксические ошибки можно выявить при запуске или во время импортирования файла). Это не такой большой недостаток — как и для большинства языков программирования это лишь означает, что прежде чем распространять свой программный код, его необходимо тестировать.
Кроме того, динамическая природа языка Ру1Ьоп, автоматический вывод сообщений об ошибках и модель исключений в языке Ру(Ьоп позволяют быстрее и проще отыскивать и исправлять ошибки, чем в других языках программирования (например, в отличие от языка С, интерпретатор Ру1Ьоп не вызывает крах системы при появлении ошибок). Система РуСЬесйег обеспечивает возможность выявления широкого круга наиболее часто встречающихся ошибок еще до того, как сценарий будет запущен. Она играет роль, похожую на ту, какую играет программа «1ш1«в разработке на языке С. Некоторые коллективы разработчиков проверяют свой программный код на языке Ру(Ьоп с помощью РуСЬес)сег еще до его тестирования или распространения, чтобы выявить все скрытые проблемы.
В действительности даже стандартная библиотека языка Ру$Ьоп регулярно проверяется с помощью РуСЬес)сег перед выпуском. РуСЬес(сег— это сторонний пакет, распространяемый с открытыми исходными текстами. Найти его можно по адресу Ьыр://шшшруеЬоп.огу или на веб-сайте проекта Чап)(в о( Рагпаввпв. Ру(7л(1 (он же ип1ссевГ ) В пятой части книги мы видели, как в файлы модулей добавляется программный код самопроверки, который использует результат проверки паве == ' за1п '.
Дополнительно для нужд тестирования в состав Ру(Ьоп входят два инструмента. Первый, Ру()п)1 (в руководстве по библиотеке называется оп1шев1), обеспечивает комплект классов, с помощью которых можно определить и настроить варианты тестов и указать ожидаемые результаты. Он напоминает платформу Л)п11 в языке дача. Это сложная основанная на классах, система, подробное описание которой вы найдете в справочном руководстве по библиотеке Ру(Ьоп. Заключение по основам языка уб9 Посгеег Модуль сосСеэт, входящий в состав стандартной библиотеки, реализует второй и более простой подход к регрессивному тестированию. Он основан на использовании строк документирования в языке РуСЬоп.
В первом приближении, чтобы воспользоваться модулем Оостеэ1, следует скопировать результаты тестирования в интерактивном сеансе в строки документирования в файле с исходным текстом. После этого модуль ОосСеэг извлечет эти строки документирования, вычленит из них описание тестов с ожидаемыми результатами и повторно выполнит тесты, чтобы сравнить полученные результаты с ожидаемыми. Функциональные возможности боссеэг могут использоваться разными способами, о чем подробнее рассказывается в справочном руководстве по библиотеке РуСЬоп. Интегрированные среды разработки В главе 3 мы уже рассматривали интегрированные среды разработки для языка РуСЬоп.
Такие интегрированные среды, как ПП Е, обеспечивают графический интерфейс для редактирования, запуска, отладки и просмотра программ на языке РуСЬоп. Некоторые мощные интегрированные среды разработки, такие как Ес11рзе и Кошобо, поддерживают решение дополнительных задач разработки, включая интеграцию с системами контроля версий, интерактивные построители графического интерфейса, создание файлов проектов и многих других. Список интегрированных сред разработки и построителей графических интерфейсов для языка РуСЬоп вы найдете в главе 3, а также на сайтах СсССр:!/шшш.руССсоп.огу и УаиПэ о1 Рагпаээпз.
Профилировщики Поскольку язык Ру11зоп является высокоуровневым и динамическим языком программирования, интуитивные представления о производительности, которые следуют из опыта работы с другими языками программирования, неприменимы к программному коду на языке РуСЬоп. Чтобы выявить узкие места в программе, вам необходимо добавить логику, выполняющую замеры временных интервалов с помощью инструментов, определяемых в модулях Ыэе нли Ыэе11, или запустить свой программный код под управлением модуля ргоС11е. Мы уже видели модули измерения времени в действии, когда сравнивали скорость работы итерационных инструментов в главе 17. Модуль ргоС11е — это модуль стандартной библиотеки, который реализует профилирование исходных текстов программ на языке РуСЬоп. Он выполняет строку, которую вы ему передадите (например, импорт файла или вызов функции), и затем по умолчанию выводит в стандартный поток вывода отчет, в котором собрана информация о производительности — количество вызовов каждой функции, время, потраченное каждой функцией, и многое другое.
Модуль ргоС11ег допускает дополнительную настройку, например, он может Глава 29. Использование исключений сохранять полученную информацию в файле для последующего анализа с помощью модуля регата. Отладчики Стандартная библиотека языка РуФЬоп включает модуль отладчика исходных текстов с именем рсЬ. Этот модуль работает подобно отладчику командной строки в языке С (например, дбх, дс(Ь): вы импортируете модуль, запускаете программный код вызовом функции из модуля ос 0 (например, рОЬ. гоп("вз! п( )" )) и затем вводите команды отладчика в интерактивном режиме.
Кроме того, модуль рсЬ включает полезную функцию для проведения послеаварийного анализа — ос Ь. ра, которая позволяет выполнять отладку после появления исключения. Многие интегрированные среды разработки, такие как 1Э1 Е, включают интерфейсы «указал и щелкнул«, поэтому рОЬ в наши дни используется относительно редко — советы по использованию отладчика с графическим интерфейсом в 11)1 Е вы найдете в главе 3.' Варианты распространения В главе 2 были представлены инструменты, используемые для упаковки программ на языке РуСЬоп. Такие инструменты, как ру2ехе, Ру1пвса!1ег и Ггеехе, могут упаковывать байт-код и виртуальную машину с интерпретатором РуФЬоп в «фиксированные двоичные файлы«, которые способны выполняться как самостоятельные программы, не требуют установки РуФЬоп и полностью скрывают программный код. Кроме того, в главе 2 и в пятой части книги мы узнали, что программы на языке РуФЬоп могут распространяться в виде исходных текстов (.ру) или в виде байт-кода (.рус), а также о существовании программных ловушек, обеспечивающих возможность реализации специализированных приемов работы с пакетами, таких как автоматическое извлечение файлов из архивов в формате .г(р и шифрование байт-кода.
Мы также познакомились с модулем 01вгссз1э, входящим в состав стандартной библиотеки, который обеспечивает упаковку модулей и пакетов на языке РуФЬоп и расширений, написанных на языке С, — за дополнительной информацией обращайтесь к справочным руководствам по языку Ру«Ьоп. Честно говоря, отладчик интегрированной среды ПП.Е тоже используется не слишком часто. Большинство практикующих программистов предпочитают отлаживать свой программный код вставкой инструкций ртт в кри.
тнческнх точках. Поскольку промежуток времени от изменения до выполнения в языке Ру«Ьоп очень короткий, добавление инструкций ргшс выполняется быстрее, чем ввод команды отладчика ров или запуск сеанса отладки в среде разработки с графическим интерфейсом. Еще один прием отладки, который вообще не требует никаких действий, основан на использовании сообщений, которые выводит интерпретатор в случае ошибки. Обычно эти сообщения дают достаточно информации, чтобы цроавалвзнровать и исправить ошибку.