ОСНОВНОЕ

WORDPRESS

Операционные системы

Базы данных

Фреймворк Bootstrap

410 Dосumеnt Rеmоvеd - хочу развода!

Как отлаживать Python с интерактивной консоли

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Статья опубликована: 1 мая 2017

Как отлаживать Python с интерактивной консоли

Введение

Отладка является частью процесса разработки программного обеспечения, где программисты ищут, а затем решают проблемы, которые мешают программному обеспечению от правильного запуска.

Полезный и быстрый инструмент для отладки является модуль code в Python, так как он может быть использован для эмуляции интерактивного интерпретатора. Модуль также предоставляет возможность экспериментировать с кодом , который вы пишете в Python.

Понимание модуля code

Вместо того, чтобы пройти через код с помощью отладчика, вы можете добавить модульcode в программу Python, чтобы настроить программу , остановить выполнение и ввести в интерактивный режим для того, чтобы изучить, как работает ваш код. Модуль code является частью стандартной библиотеки Python.

Это полезно, потому что вы можете использовать интерпретатор без ущерба сложности и неизменности, которое программирование могут обеспечить. Благодаря помощи модуля code вы можете избежать использования заявления print() на протяжении всей отладки кода, которая может стать громоздкой с течением времени.

Для того, чтобы использовать модуль в качестве метода для отладки, вы можете использовать функцию interact() модуля, который останавливает выполнение программы в точке, в которой она указывается, и предоставляет вам интерактивную консоль, так что вы можете проверить состояние вашей программы.

Функция с ее возможными параметрами являются следующие:

 

Эта функция запускает цикл read-eval-print и создает экземпляр объекта класса InteractiveConsole, который эмулирует поведение интерпретатора Python.

Необязательные следующие параметры:

  • banner может быть установлен в строку, так что вы можете отметить, где интерпретатор запускает
  • readfunc может быть использована в качестве метода InteractiveConsole.raw_input()
  • local установит пространство имен по умолчанию для цикла интерпретатора
  • exitmsg может быть установлен на строку, чтобы отметить, где заканчивается интерпретатор

С параметром local, вы можете использовать, например:

  • local=locals() для локального пространства имен
  • local=globals() для глобального пространства имен
  • local=dict(globals(), **locals()) использовать как глобальное пространство имен и текущее локальное пространство имен

Обратите внимание, что параметр exitmsg является новым в Python 3.6, так что если вы используете старую версию Python, обновите его или укажите параметр exitmsg.

Вы можете поместить функцию interact() везде, где вы хотели бы в вашей программе запуск интерактивного интерпретатора в коде.

Работа с модулем code

Давайте посмотрим на это в контексте программы под названием balances.py. Мы зададим параметр local в locals() чтобы установить пространство имен для локальных.

balances.py

 

Мы использовали функцию code.interact() с параметром local=locals() использовать локальное пространство имен по умолчанию внутри цикла интерпретатора.

Давайте запустим программу выше, используя команду python3, если мы не в виртуальной среде, или иначе команду python:

 

После запуска программы, мы получим следующий результат:

 

Ваш курсор будет помещен в конце линии >>>, так же, как это было бы в интерактивной оболочке Python.

Здесь вы можете оформить вызовы для печати переменных, функций и т.д .:

 

Мы видим , что, используя локальное пространство имен, мы можем напечатать переменные и вызвать функцию. Окончательный вызова print() показывает местоположение функции display_bal в памяти компьютера.

Как только вы стали удовлетворены работой над изучением интерпретатора, вы можете нажать CTRL + D на * NIX системах или CTRL + Z для систем на базе Windows, чтобы оставить консоль и продолжить выполнение программы.

Если вы хотите оставить консоль без запуска оставшейся части программы, вы можете сделать это, набрав , quit() и программа будет прервана.

Для того, чтобы использовать параметры banner и exitmsg, мы можем выполнить следующее:

balances.py
 

Когда мы запускаем программу, мы получим следующий результат:

 

Используя параметр banner позволяет вам установить несколько точек в пределах вашего кода и даст вам возможность идентифицировать их. Например, вы можете использовать banner для печати "In for-loop" с  exitmsg  для печати "Out of for-loop", так что вы можете точно сказать, где вы находитесь в коде.

Отсюда, мы можем использовать интерпретатор, как обычно. После этого, когда мы наберем CTRL + D для выхода из интерпретатора, мы получим сообщение выхода и функция будет работать в обычном режиме:

 

Программа теперь полностью работает после интерактивного сеанса.

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

Вывод

Использование модуля code для запуска интерактивной консоли может позволить вам взглянуть на то, как работает код на детальном уровне, чтобы понять его поведение и вносить изменения по мере необходимости. Чтобы узнать больше об этом, вы можете прочитать официальную документацию модуля code.

 


Читайте также

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close