каждый раз, когда я отлаживаю код, который содержит for-loop, например
# When I debug this code
for i in range(3):
print(i)
Я пришел, чтобы исправить переменную и выполнить код, например
# I want to do this
i = 2
# for i in range(3):
print(i)
Однако приведенный выше код приводит к ошибке, потому что есть неожиданный отступ. Поэтому мне всегда нужно отключать строки внутри цикла for, который повторяется:
# But I have to do this
i = 2
# for i in range(3):
print(i)
Есть ли способы оставить отступы без изменений, комментируя строку for
?
Замените цикл for
на оператор блока, который безоговорочно выполняет содержимое:
i = 2
# for i in range(3):
if 1: # Or if you prefer, if True:
print(i)
Теперь ожидается отступ, но if 1:
/if True:
выполняется безоговорочно (в Python 3, в интерпретаторе ссылок на CPython, оба из них оптимизируют, if
полностью, он выполняется без какого-либо теста), он ведет себя одинаково с ручная версия.
В качестве альтернативы, без добавления i = 2
на всех, вы можете сделать for
циклы циклы по одной постоянной величине:
for i in [2]: # range(3): Old code
print(i)
чтобы получить тот же эффект. for я in (2,):
(parens необязательно) также будет работать, но эта конечная запятая, что one- tuple
требует много людей, и, как это происходит, циклы над list
константных литералов оптимизированы для циклов по tuple
постоянных литералов, так что никаких потерь в производительности не возникает.
Вместо этого вы можете сделать цикл for
вместо одного элемента:
for i in 2,:
# for i in range(3):
print(i)
if True:
В аналогичных, но разных сценарияхpass
полезен (например, вы закомментировали единственную строку блока, и ожидается отступ)i = 2
на том же уровне, что иprint(i)