Автор оригинала: Doug Hellmann.
За время своего существования Python разработал обширную экосистему модулей, призванных облегчить жизнь разработчикам Python, избавив их от необходимости создавать все с нуля. Та же самая философия была применена к инструментам, которые разработчики используют для выполнения своей работы, даже если они не используются в окончательной версии программы. В этой главе рассматриваются модули, входящие в состав Python, которые предоставляют средства для решения общих задач разработки, таких как тестирование, отладка и профилирование.
Самая основная форма помощи для разработчика – это документация по используемому им коду. Модуль pydoc генерирует отформатированную справочную документацию из строк документации, включенных в исходный код для любого импортируемого модуля.
Python включает две среды тестирования для автоматического тестирования кода и проверки его правильности. doctest извлекает тестовые сценарии из примеров, включенных в документацию, либо внутри исходного кода, либо в виде отдельных файлов. unittest – это полнофункциональная автоматизированная среда тестирования с поддержкой фикстур, предварительно определенных наборов тестов и обнаружения тестов.
Модуль трассировки следит за тем, как Python выполняет программу, создавая отчет, показывающий, сколько раз выполнялась каждая строка. Эту информацию можно использовать для поиска путей кода, которые не тестируются автоматическим набором тестов, и для изучения графа вызовов функций, чтобы найти зависимости между модулями.
Написание и выполнение тестов позволит выявить проблемы в большинстве программ. Python помогает упростить отладку, поскольку в большинстве случаев необработанные ошибки выводятся на консоль как трассировки. Когда программа не запущена в среде текстовой консоли, трассировку можно использовать для подготовки аналогичных выходных данных для файла журнала или диалогового окна сообщения. В ситуациях, когда стандартная трассировка не предоставляет достаточно информации, используйте cgitb для просмотра деталей, таких как настройки локальных переменных на каждом уровне стека и исходного контекста. cgitb
также может форматировать трассировку в HTML для сообщения об ошибках в веб-приложениях.
После определения местоположения проблемы пошаговое выполнение кода с помощью интерактивного отладчика в модуле pdb может упростить исправление, показывая, какой путь через код был пройден, чтобы добраться до ситуации ошибки, и экспериментируя с изменениями с использованием живых объектов. и код.
После того, как программа протестирована и отлажена для правильной работы, следующим шагом будет работа над производительностью. Используя profile и timeit, разработчик может измерить скорость программы и найти медленные части, чтобы их можно было изолировать и улучшить.
Важно делать отступы в исходном коде на таком языке, как Python, где пробелы имеют значение. Модуль tabnanny предоставляет сканер для сообщения о неоднозначном использовании отступов и может использоваться в тестах, чтобы убедиться, что код соответствует минимальным стандартам, прежде чем он будет возвращен в исходный репозиторий.
Программы Python запускаются путем предоставления интерпретатору скомпилированной в байтах версии исходного кода программы. Скомпилированные байтом версии могут быть созданы «на лету» или один раз, когда программа упакована. Модуль compileall предоставляет интерфейс, используемый программами установки и инструментами упаковки для создания файлов, содержащих байт-код для модуля. Его можно использовать в среде разработки, чтобы убедиться, что файл не содержит синтаксических ошибок, и для построения скомпилированных байтов файлов для упаковки при выпуске программы.
На уровне исходного кода модуль pyclbr предоставляет обозреватель классов, который может использоваться текстовым редактором или другой программой для сканирования исходного кода Python на предмет интересных символов, таких как функции и классы, без импорта кода и потенциального запуска побочных эффектов.
Виртуальные среды Python, которыми управляет venv, определяют изолированные среды для установки пакетов и запуска программ. Они позволяют легко тестировать одну и ту же программу с разными версиями зависимостей и устанавливать разные программы с конфликтующими зависимостями на одном компьютере.
Для использования преимуществ большой экосистемы модулей расширения, фреймворков и инструментов, доступных через Python Package Index, требуется установщик пакета. Установщик пакета Python, pip, не распространяется с интерпретатором из-за длительного цикла выпуска для языка по сравнению с желаемыми обновлениями инструмента. Модуль surepip можно использовать для установки последней версии pip.
- pydoc – интерактивная справка для модулей
- doctest – Тестирование с помощью документации
- unittest – Автоматизированная среда тестирования
- трассировка – следовать потоку программы
- traceback – Исключения и трассировки стека
- cgitb – подробные отчеты об отслеживании
- pdb – Интерактивный отладчик
- profile и pstats – Анализ производительности
- timeit – время выполнения небольших фрагментов кода Python.
- tabnanny – валидатор отступов
- compileall – Исходные файлы с байтовой компиляцией
- pyclbr – Браузер классов
- venv – Создание виртуальных сред
- surepip – установить установщик пакетов Python