Python: как управлять пространством имен после необработанного исключения? - PullRequest
1 голос
/ 14 июня 2011

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

1 Ответ

2 голосов
/ 14 июня 2011

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

...