Python как закомментировать оператор for без отступа - PullRequest
0 голосов
/ 11 октября 2018

каждый раз, когда я отлаживаю код, содержащий цикл for, например,

# 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 линия?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Вы можете сделать цикл for итерацией по кортежу из одного элемента:

for i in 2,:
# for i in range(3):
    print(i)
0 голосов
/ 11 октября 2018

Замените цикл 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 i in (2,): (необязательный parens) также будет работать, но та запятая, которая требует один - tuple s, запутывает много людей, и, как это случается, циклы над list s константных литералов оптимизируются для циклов над *В любом случае 1018 * константных литералов, поэтому потери производительности не возникают.

...