2016-03-07 26 views
7

Perché non riesco a definire nuove funzioni quando eseguo pdb?Come definire una nuova funzione in pdb

Per esempio prendere myscript.py:

#!/gpfs0/export/opt/anaconda-2.3.0/bin/python 
print "Hello World" 
print "I see you" 

Se corro python -m pdb myscript.py e cerco di definire in modo interattivo una nuova funzione:

def foo(): 

ottengo l'errore:

*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1) 

Perchè è questo?

+1

Usa 'ipdb', invece, per il supporto multilinea – wim

risposta

5

È possibile definire la funzione in una nota di una riga usando ; invece di rientro, in questo modo:

(Pdb) def foo(): print 'Hello world'; print 'I see you' 
(Pdb) foo() 
Hello world 
I see you 
9

Non credo che supporti l'immissione multi-linea. È possibile risolvere il problema creando una sessione interattiva da pdb. Una volta che hai finito nella sessione interattiva, esci con Ctrl + D.

>>> import pdb 
>>> pdb.set_trace() 
(Pdb) !import code; code.interact(local=vars()) 
(InteractiveConsole) 
In : def foo(): 
...:  print 'hello in pdb' 
...: 
In : # use ctrl+d here to return to pdb shell... 
(Pdb) foo() 
hello in pdb