Разрабатывая ответ Свена, я недавно должен был описать until
и next
коллеге. Это относится не только к пониманию списка, которое stuck
с next, но и к циклам в целом.:
Команда until
аналогична next
, за исключением того, что она явно продолжается до тех пор, пока выполнение не достигнет строки в той же функции с номером строки, превышающим текущее значение.
Это означает, что вы можете перешагивать циклы с помощью until
Просто чтобы покрыть step
и next
для полноты картины:
Команда step
используется для выполнения текущей строки и последующей остановки в следующей точке выполнения.
Это означает, что он будет идти инструкция за инструкцией. Обратите внимание, что объединенные инструкции с ;
будут обрабатываться как одна инструкция.
var A=0; var B=0 #Note: that will count as one instruction
Команда next аналогична шагу, но не входит в функции, вызываемые из выполняемого оператора. По сути, он проходит весь путь от вызова функции до следующего оператора в текущей функции за одну операцию.
next
помогает перепрыгнуть через несколько инструкций, в функции с несколькими определениями переменных он перепрыгнет через все из них.
Вот пример, демонстрирующий сценарий:
Пример: pdb_until.py
aVar = 3
x = [i for i in range(0,30)]
bVar = 5
Запуск с помощью Pdb:
python -m pdb pdb_until.py
Начинает наш интерактивный сеанс:
> 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)
Источник: Стандартная библиотека Python на примере, Дуг Хеллманн.
person
user1767754
schedule
08.12.2017