Как консоли отладки реализованы в Python?

Когда вы определяете словарь как d:()!(), первое, что вы вставляете (в данном случае, дату), заставит тип словаря принимать только значения типа -14h. Стандартная практика - инициализировать dict нетипизированным значением, чтобы значение не становилось простым вектором

d2:enlist[`]!enlist(::)
d2[`t1]:2017.01.01
d2[`t2]:2018.01.01
d2[`idx]:42
d2
   | ::
t1 | 2017.01.01
t2 | 2018.01.01
idx| 42
.
10
задан TarkaDaal 14 January 2009 в 20:17
поделиться

5 ответов

Право, я стыжусь признать, что это находится на самом деле в документации для InteractiveConsole, в конце концов. Можно сделать, это работать в локальном контексте путем передачи в результате местных жителей () функционирует конструктору InteractiveConsole. Я не мог найти способ закрыть InteractiveConsole, не уничтожая приложение, таким образом, я расширил его, чтобы просто закрыть консоль, когда это ловит исключение SystemExit. Мне не нравится он, но я еще не нашел лучший путь.

Вот некоторый (довольно тривиальный) пример кода, который демонстрирует консоль отладки.

import code

class EmbeddedConsole(code.InteractiveConsole):
    def start(self):
        try:
            self.interact("Debug console starting...")
        except:
            print("Debug console closing...")

def print_names():
    print(adam)
    print(bob)

adam = "I am Adam"
bob = "I am Bob"

print_names()
console = EmbeddedConsole(locals())
console.start()
print_names()
3
ответ дан 4 December 2019 в 01:03
поделиться

Вы могли попытаться смотреть на отладчик Python pdb. Это похоже на gdb в том, как Вы используете его, но реализованный в чистом Python. Взгляните для pdb.py в Вашем каталоге установки Python.

6
ответ дан 4 December 2019 в 01:03
поделиться

http://docs.python.org/3.0/library/functions.html#input
http://docs.python.org/3.0/library/functions.html#eval

def start_interpreter():
     while(True):
          code = input("Python Console >")
          eval(code)

Я уверен, однако, что их реализация является намного большим количеством foolsafe, чем это.

2
ответ дан 4 December 2019 в 01:03
поделиться

Python имеет платформу отладчика в bdb модуле. Я не уверен, использует ли IDE, который Вы перечисляете, его, но, конечно, возможно реализовать полный отладчик Python с ним.

0
ответ дан 4 December 2019 в 01:03
поделиться

Если вы хотите поэкспериментировать с собственной консолью Python, это приятный пуск:

cmd = None
while cmd != 'exit':
    cmd = raw_input('>>> ')
    try:
        exec(cmd)
    except:
        print 'exception'

, но для реальной работы используйте вместо этого взаимодействие.

0
ответ дан 4 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

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