Python как закомментировать оператор for без отступов

1

каждый раз, когда я отлаживаю код, который содержит 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?

  • 1
    Я обычно заменяю это, if True: В аналогичных, но разных сценариях pass полезен (например, вы закомментировали единственную строку блока, и ожидается отступ)
  • 0
    Попробуйте сделать отступ строки i = 2 на том же уровне, что и print(i)
Теги:
python-3.x
debugging
indentation

2 ответа

5
Лучший ответ

Замените цикл 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 постоянных литералов, так что никаких потерь в производительности не возникает.

  • 0
    Удивительно! Я должен был спросить намного раньше! Спасибо!
1

Вместо этого вы можете сделать цикл for вместо одного элемента:

for i in 2,:
# for i in range(3):
    print(i)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню