Python: как управлять пространством имен после необработанного исключения?

1

Есть ли способ контролировать, какое пространство имен вы входите после необработанного исключения? Например, если я нахожусь в подсказке 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 более приятной, чтобы сориться. На данный момент я часто копирую функциональный код в глобальное пространство имен и проверку оттуда.

Теги:
namespaces
debugging
ipython

1 ответ

2
Лучший ответ

Вы можете включить автоматический вызов pdb в приглашении ipython, набрав %pdb.

  • 1
    В качестве альтернативы, после появления исключения вы можете набрать %debug чтобы войти в отладчик.
  • 0
    да, спасибо, это будет хорошо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню