Abundando en la respuesta de Sven como tuve que describir until
y next
a un colega recientemente. No es específico para la lista de la comprensión de que es stuck
con otro, pero para los bucles en general .:
El comando until
es como next
, excepto que continúa de forma explícita hasta que la ejecución alcanza una línea en la misma función con un número de línea más alto que el valor actual.
Lo que significa que puede pasar por encima de los bucles con until
sólo para cubrir step
y next
esté completo:
El step
comando se utiliza para ejecutar la línea actual y luego se detiene en el siguiente punto de ejecución
Lo que significa que irá instrucción por instrucción. Observe que las instrucciones de concatenación con ;
se manejarán como una instrucción.
var A=0; var B=0 #Note: that will count as one instruction
El próxima comando es como paso, pero no entra en funciones llamadas de la instrucción que se está ejecutando. En efecto, recorre todo el camino a través de la llamada de función a la siguiente declaración en la función actual en una sola operación.
El next
ayuda a saltar sobre múltiples instrucciones, en una función de múltiples definiciones de variables saltará sobre todas ellas.
Aquí es un ejemplo que demuestra el escenario:
Ejemplo: pdb_until.py
aVar = 3
x = [i for i in range(0,30)]
bVar = 5
La ejecución de este PDB:
python -m pdb pdb_until.py
Inicia la sesión interactiva:
> pdb_until.py(1)<module>()
-> aVar = 3
(Pdb) step #our Input, we step
> pdb_until.py(2)<module>()
-> x = [i for i in range(0,10)]
(Pdb) next #our Input, next
> pdb_until.py(2)<module>()
-> x = [i for i in range(0,10)]
(Pdb) next #our Input, we are now stuck on line 2
> pdb_until.py(2)<module>()
-> x = [i for i in range(0,10)]
(Pdb) until #our Input, until steps over (runs list comp)
Fuente: La Biblioteca de Python estándar por ejemplo, Doug Hellmann