Python如何在没有unindenting的情况下注释掉for语句

dia*_*hos 1 python debugging indentation python-3.x

每次我调试包含for循环的代码时,例如

# When I debug this code

for i in range(3):
    print(i)
Run Code Online (Sandbox Code Playgroud)

我想要修复变量并执行代码,例如

# I want to do this

i = 2
# for i in range(3):
    print(i)
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码会导致错误,因为存在意外的缩进.所以我总是要取消for循环中的行,这是重复的工作:

# But I have to do this

i = 2
# for i in range(3):
print(i)
Run Code Online (Sandbox Code Playgroud)

在评论出这for条线时,有没有办法让缩进保持不变?

Sha*_*ger 5

for无条件执行内容的块语句替换循环:

i = 2
# for i in range(3):
if 1:  # Or if you prefer, if True:
    print(i)
Run Code Online (Sandbox Code Playgroud)

现在缩进是预期的,但是自从if 1:/ if True:无条件执行(在Python 3中,在CPython引用解释器上,它们都if完全优化;它在没有任何类型的测试的情况下执行),它的行为与手动缩减版本相同.

或者,在不添加任何内容的情况i = 2下,可以将for循环循环设置为单个常量值:

for i in [2]: # range(3): Old code
    print(i)
Run Code Online (Sandbox Code Playgroud)

获得相同的效果.for i in (2,):(parens可选)也可以工作,但是那个tuple需要让很多人搞砸的尾随逗号,并且正如它发生的那样,list对常量文字的循环进行了优化,tuple无论如何都优化了s 循环,所以没有性能损失是招致的.