Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Отладчик Python:без усилий улучшите свои навыки отладки

Отладка кода Python для многих из нас сводится к добавлению операторов печати и попытке понять, что происходит, на основе вывода. Это не идеально, но почему-то люди просто не хотят трогать отладчик Python.

Содержание

Использование печати для отладки кода

Если вы один из тех, кто использует print для отладки я вас не осуждаю . Изучать Python сложно. Программировать тяжело. Жизнь тяжела. Я понимаю, что изучение еще одной вещи кажется утомительным, если вы уже боретесь. И добавить этот оператор печати в свой код… это просто проще. Небольшое признание:я до сих пор делаю это все время. Все не так плохо, как некоторые думают.

Сказав это, я собираюсь научить вас небольшому трюку, который будет так же прост, как добавление операторов печати в ваш код. Однако этот трюк дает вам бесконечные возможности отладки и позволит вам завоевать мир, если вам это нужно.

Установка точки останова отладчика Python

Вам не нужна IDE для правильной отладки кода. Этот трюк работает всегда, и в самом простом редакторе, и даже в Jupyter Notebooks.

Хитрость сводится к следующему:установка так называемой точки останова с помощью инструкции breakpoint() . Вы можете вставить его в свой код, независимо от того, какой редактор или IDE вы используете, в том месте, где вы обычно вставляете этот надоедливый оператор печати.

Так что же происходит, когда вы это делаете? Давай выясним! Создайте простую программу, как показано ниже:

def add_two(x):
    return x + 2
for i in range(1, 10):
    a = add_two(i)
    breakpoint()
    print(a)

Когда вы запускаете это, и не имеет значения, делаете ли вы это в REPL, из командной строки или в своей IDE, вы попадаете в отладчик Python, который называется PDB. Но что теперь?

Использование отладчика Python

Когда я запускаю небольшую программу выше, происходит следующее:

$ python3 breakpointing.py
> /home/erik/breakpointing.py(7)<module>()
-> print(a)
(Pdb)_

Здесь есть на что посмотреть:

Отладчик Python на самом деле представляет собой полностью функционирующую оболочку Python, как и REPL.

На этом этапе мы можем проверить текущую среду. Давайте посмотрим, какое значение a прямо сейчас:

(Pdb) print(a)
3
(Pdb) print(i)
1

Вместо печати вы также можете использовать специфичную для pdb команду p, например:

(Pdb) p a
3
(Pdb_ p i
1

Переход к следующей строке

Так что, если мы хотим запустить следующую строку кода? Есть два варианта:

Чтобы было понятнее:step счастливо входит в вызов функции и прерывается внутри этой функции. Напротив, next выполняет функцию до тех пор, пока она не завершится, и прерывается на следующей строке.

Другие отладчики и IDE также называют это «шагом внутрь» (вместо «шаг») и «шагом через» (вместо «следующий»).

Теперь воспользуемся этими двумя:

$ python3 breakpointing.py
-> print(a)
(Pdb) s
3
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) n
-> breakpoint()
(Pdb) n
-> print(a)
(Pdb) n
4
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) s
--Call--
-> def add_two(x):
(Pdb) s
-> return x + 2
(Pdb) s
--Return--
5
-> return x + 2
(Pdb) s
-> breakpoint()
(Pdb)

Как видите, сначала мы проходим через вызов add_two. с n . Во второй раз мы входим в функцию с s .

Команды отладчика Python

Есть и другие команды, которые вы можете попробовать самостоятельно. Все перечислять не буду, только самые полезные:

Для получения полной документации перейдите на страницу отладчика Python, где перечислены все команды.

Продолжайте учиться

Хотя это может оказаться очень удобным, стоит погрузиться в отладчик, который предлагает ваша IDE. Если вы являетесь пользователем VSCode, я написал руководство по отладке кода Python в VSCode.


Python

  1. Ввод, вывод и импорт Python
  2. Оператор Python Print():как печатать с примерами
  3. Строки Python:заменить, объединить, разделить, перевернуть, прописные и строчные буквы
  4. Python time.sleep():добавьте задержку в свой код (пример)
  5. Новая строка Python:как печатать БЕЗ новой строки в Python
  6. Подключенные автопарки улучшают вашу прибыль
  7. Как прототипы улучшают ваш производственный процесс
  8. 5 способов улучшить детали из листового металла
  9. 3 совета по улучшению плана технического обслуживания оборудования
  10. Советы и соображения:научитесь улучшать свои навыки проектирования печатных плат