Python, эквивалентный из остановки и .reset IDL

Я относительно плохо знаком с Python, но имею немного опыта с помощью IDL. Я задавался вопросом, знает ли кто-либо, существуют ли эквивалентные команды в Python для остановки IDL и команды .reset.

Если я запускаю некоторый скрипт IDL, я записал, что вставил команду остановки, по существу что он делает остановить сценарий там и предоставить мне доступ к командной строке посреди сценария. Таким образом, у меня есть доступ ко всем функциям и переменным, которые я определил перед командой остановки, которую я нахожу действительно полезными для отладки.

.reset управляют, чтобы я нашел чрезвычайно полезными также. То, что это делает, сбрасывается среда IDL (очищает все переменные, функции, и т.д.). Это - как будто я закрыл тот сеанс и открыл новый, но не имея необходимость выходить и перезапускать IDL. Я нахожу, что, если я пытаюсь отладить сценарий, я записал, что полезно иногда запуститься с нуля и не иметь для сброса IDL (или Python теперь). Было бы полезно также в Python смочь не импортировать любые модули, которые я ранее импортировал.

Любая справка с этими проблемами значительно ценилась бы.

Удачи

Похожие страницы

8
задан Community 23 May 2017 в 12:10
поделиться

5 ответов

Вы, вероятно, просто хотите использовать отладчик Python для этого.

0
ответ дан 5 December 2019 в 20:16
поделиться

стоп звучит эквивалентно использованию кода модуля. .reset не имеет эквивалента на Python, за исключением безвозмездного использования del.

1
ответ дан 5 December 2019 в 20:16
поделиться

Добро пожаловать в сообщество Python! Я все еще учиюсь, но приятнее Imo Python, чем интерактивный язык данных.

В любом случае, ответ Игнасио о использовании модуля кода выглядит так, будто он может предоставить то, что вы хотите, по крайней мере, насколько параллельно остановке IDL.

Другое, что вы можете найти полезной, - это перейти в интерактивный режим Python и импортировать вашу программу. Затем вы можете взаимодействовать с ним под управлением функциями и т. Д. (По общему признанию, я не специалист по этому поводу.) Если вы это сделаете, вам понадобится основная () функция в файле, которая управляет программой. Например, у вас будет что-то вроде:

import sys
def main():
    # do stuff
    return(0)

if __name__ == '__main__':
    sys.exit(main())

вместо всего лишь:

# do stuff

Это предотвращает выполнение программы при вытянув ее в переводчик Python. Для получения дополнительной, см. статья Гвидо о главных функциях .

0
ответ дан 5 December 2019 в 20:16
поделиться

IPython (помимо того, что REPL намного лучше, чем стандартный интерпретатор Python) может делать то, что вы хотите:

from IPython.Shell import IPShellEmbed

start_shell = IPShellEmbed()

def times_2(x):
    return 2*x

a = 5

start_shell()

# now in IPython shell
# a -> 5
# times_2(a) -> 10

Обратите внимание, что любые изменения, внесенные в оболочку , не будут отправлены обратно в основной процесс Python при выходе - если вы установите = 10 в IPython (используя приведенный выше пример), a по-прежнему равно 5 в основном процессе Python.

править: сообщение в списке рассылки пользователей IPython , где я впервые увидел эту технику.

3
ответ дан 5 December 2019 в 20:16
поделиться

Используйте pdb, как в этом коротком скрипте. Запустите его из командной строки, и волшебным образом появится приглашение PDB, позволяющее выполнять пошаговое выполнение, оценку произвольных выражений и т. Д.

#!/usr/bin/env  python
import pdb;

print 1
print 2
pdb.set_trace()
print 3
print 4
1
ответ дан 5 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: