Python 如何在不取消缩进的情况下注释掉 for 语句

Python how to comment out a for statement without unindenting

每次我调试包含 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 行时保持缩进不变?

用无条件执行内容的块语句替换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 可选)也可以工作,但是 one-tuples 需要的尾随逗号让很多人感到困惑,并且碰巧循环了 lists 的常量文字无论如何都经过优化以循环遍历 tuple 个常量文字,因此不会造成性能损失。

您可以让 for 循环遍历单项元组:

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