Поиск по сайту:

Точка останова Python()


Python breakpoint() — это новая встроенная функция, представленная в Python 3.7. Отладка кода Python всегда была болезненным процессом из-за тесной связи между фактическим кодом и кодом модуля отладки. Например, если вы используете отладчик pdb, вам придется вызывать pdb.set_trace() в коде программы. Если вы хотите использовать любой другой отладчик, скажем, web-pdb, вам придется удалить весь код, связанный с PDB, и добавить метод web_pdb.set_trace(). Это приводит к огромным накладным расходам при использовании отладчика Python и затрудняет отладку и поддержку кода Python. Вот почему в Python 3.7 появился метод breakpoint(), который позволяет нам писать слабосвязанный отладочный код.

Точка останова Python()

Функция точки останова Python() вызывает функцию sys.breakpointhook(). По умолчанию sys.breakpointhook() вызывает функцию pdb.set_trace(). Так что, по крайней мере, использование breakpoint() обеспечивает удобство использования отладчика, потому что нам не нужно явно импортировать модуль pdb. Давайте рассмотрим простой пример использования функции breakpoint(). У нас есть скрипт Python python_breakpoint_examples.py со следующим кодом.

x = 10
y = 'Hi'
z = 'Hello'
print(y)

breakpoint()

print(z)

Когда мы выполняем этот скрипт, открывается консоль отладчика PDB.

$python3.7 python_breakpoint_examples.py
Hi
> /Users/pankaj/Documents/PycharmProjects/BasicPython/basic_examples/python_breakpoint_examples.py(8)()
-> print(z)
(Pdb) c
Hello
$

Точка останова Python() — остановить отладку

Функция Python sys.breakpointhook() использует переменную среды PYTHONBREAKPOINT для настройки отладчика. Если не установлено, используется отладчик PDB по умолчанию. Если для него установлено значение \0, функция возвращается немедленно, и отладка кода не выполняется. Это очень полезно, когда мы хотим запустить наш код без отладки.

$PYTHONBREAKPOINT=0 python3.7 python_breakpoint_examples.py
Hi
Hello
$

Точка останова Python() — изменить модуль отладчика

Мы можем использовать переменную среды PYTHONBREAKPOINT, чтобы предоставить метод отладчика, который будет вызываться функцией breakpoint(). Это очень полезно, потому что мы можем легко изменить модуль отладчика, не внося никаких изменений в код. Допустим, мы хотим использовать отладчик web-pdb. Мы можем легко подключить его к нашей программе, используя PYTHONBREAKPOINT=web_pdb.set_trace. Прежде всего, убедитесь, что установлен web-pdb. Вы можете установить его с помощью команды pip3.7 install web-pdb.

Согласно документации web-pdb, он совместим с новой функцией breakpoint(), добавленной в Python 3.7.

$PYTHONBREAKPOINT=web_pdb.set_trace python3.7 python_breakpoint_examples.py
Hi
2018-08-10 12:49:54,339: root - web_console:110 - CRITICAL - Web-PDB: starting web-server on pankaj:5555...

Резюме

Функция точки останова Python() — очень полезное дополнение к функции отладки Python. Рекомендуется использовать это для отладки, чтобы вы могли легко подключать другие сторонние отладчики на лету. Он также предоставляет простой способ отключить отладчик и запустить программу в обычном режиме.

Вы можете ознакомиться с другими примерами Python из нашего репозитория GitHub.

Ссылка: Официальная документация