Подтвердить что ты не робот

Поддерживает ли какие-либо среды Python редактирование и продолжение?

Возможно ли в Python внести изменения в код, который вы в настоящее время отлаживаете и продолжаете без перезапуска? (Например, я могу использовать С#.)

4b9b3361

Ответ 1

У вас есть полная мощность интерпретатора у вас под рукой pdb, используйте

import pdb
pdb.set_trace()

Оттуда вы можете определить и создать новые объекты, переопределить существующие, модифицировать и перезагрузить модули и т.д. Синтаксис симуляра к gdb. Если вы используете ipython, ipdb может быть более приятным выбором, или вы можете автоматически вызывать отладчик с помощью магической функции ipython %debug.

Ответ 2

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

>>> def foo(): print 'Foo'
...
>>> bar = foo
>>>
>>> foo()
Foo
>>> bar()
Foo
>>>
>>> def foo(): print 'Bar'
...
>>> foo()
Bar
>>> bar()
Foo
>>>
>>> def call(): foo()
...
>>> call()
Bar
>>>
>>>
>>> def foo(): print 'Foo reloaded!'
...
>>>
>>> foo()
Foo reloaded!
>>> bar()
Foo
>>>
>>> call()
Foo reloaded!
>>>

Функция call относится к новому foo, но bar было назначено значение старого foo и которое не изменяется при повторном использовании имени foo.

Запрашивали ли вы поддержку редактора? Python-mode в Emacs может запускать "нижний процесс python", на который вы можете отправлять блоки кода при игре с ними. Или вы можете сделать это непосредственно в оболочке Python, как показано выше.