Nel debug del mio codice, voglio usare una comprensione di lista. Tuttavia, sembra che non possa valutare una comprensione di lista dal debugger quando sono all'interno di una funzione.Errore di scope di comprensione degli elenchi dal debugger Python
Sto usando Python 3.4.
contenuto dello script:
$ cat test.py
#!/usr/bin/python
def foo():
x = [1, 2, 3, 3, 4]
print(x)
foo()
debug interattivo:
$ python3 -mpdb test.py
> /tmp/test.py(3)<module>()
-> def foo():
(Pdb) step
> /tmp/test.py(8)<module>()
-> foo()
(Pdb)
--Call--
> /tmp/test.py(3)foo()
-> def foo():
(Pdb)
> /tmp/test.py(4)foo()
-> x = [1, 2, 3, 3, 4]
(Pdb)
> /tmp/test.py(6)foo()
-> print(x)
(Pdb) p [x for _ in range(1)]
*** NameError: name 'x' is not defined
(Pdb) p x
[1, 2, 3, 3, 4]
Perché è x
sconosciuto al di lista? Come posso valutare la comprensione di una lista dal debugger o ottenere un comportamento equivalente? È un bug o è una sorta di limite fondamentale per il debugger?
@Veedrac Huh, ho appena realizzato in un piccolo script di test, che lì funziona. Farò un po 'di scavo e tornerò con un piccolo script eseguibile! – gerrit
@Veedrac Modificato per aggiungere esattamente questo. – gerrit
Esempio più semplice: 'p (lambda: x)()' – Veedrac