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条线时,有没有办法让缩进保持不变?
用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 循环,所以没有性能损失是招致的.