Есть ли способ контролировать, какое пространство имен вы входите после необработанного исключения?
Например, если я нахожусь в подсказке ipython, и я иду run blah.py
в файл с этим содержимым:
def spam():
ham = 'ham'
crash = 1/0
eggs = 'eggs'
if __name__ == '__main__':
foo = 'foo'
spam()
он явно вылетает, но возвращает меня в приглашение ipython, теперь foo
в пространстве имен (и все ранее существующие foo
теперь перезаписываются с помощью 'foo'
). Но нет ham
. Для некоторой проверки после вскрытия часто бывает, что я предпочел бы вернуться к интерпретатору в рамках функции spam()
, чтобы ham
был бы виден, eggs
и foo
не будет...
Я знаю, что могу получить доступ к этим вещам с помощью pdb.set_trace()
, но было бы здорово, если бы был более простой ярлык, потому что я нахожу подсказку ipython более приятной, чтобы сориться. На данный момент я часто копирую функциональный код в глобальное пространство имен и проверку оттуда.
Вы можете включить автоматический вызов pdb в приглашении ipython, набрав %pdb
.
%debug
чтобы войти в отладчик.