Когда вы определяете словарь как 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
. Право, я стыжусь признать, что это находится на самом деле в документации для 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()
Вы могли попытаться смотреть на отладчик Python pdb. Это похоже на gdb в том, как Вы используете его, но реализованный в чистом Python. Взгляните для pdb.py в Вашем каталоге установки Python.
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, чем это.
Python имеет платформу отладчика в bdb модуле. Я не уверен, использует ли IDE, который Вы перечисляете, его, но, конечно, возможно реализовать полный отладчик Python с ним.
Если вы хотите поэкспериментировать с собственной консолью Python, это приятный пуск:
cmd = None
while cmd != 'exit':
cmd = raw_input('>>> ')
try:
exec(cmd)
except:
print 'exception'
, но для реальной работы используйте вместо этого взаимодействие.