批量 comment/uncomment 调试代码行的最佳方法?
Best method to bulk comment/uncomment debug lines of code?
我有一个 python 脚本,它由一个包含 if/elif 语句的非常长的循环组成。为了调试循环的流程,我在每个 if/elif 块下都有一个 print 语句,并带有一个 #debug 尾随注释,如下所示:
if my_var1 == "foo":
print(my_var1)#debug
perform_various_calculations()
if my_var2 == "foobar":
print(my_var1, my_var2)#debug
pass
这在我仍在开发脚本时很好,但一旦我过了开发阶段,我想轻松切换这些打印语句。该脚本确实包含 other 我想 not 想要注释掉的打印语句,所以一些简单的东西,比如 find/replace 打印到 #print不行。
我考虑过将一个自定义打印函数放在一起,该函数仅在设置了调试标志时才打印,但我更希望这些行被完全注释掉。
你很幸运。 Python 有一个 __debug__
标志,如果您以优化模式启动解释器(-O
命令行标志),则该标志设置为 False
,否则设置为 True
。
最好的部分是,当您使用 if __debug__:
时,Python 去掉了 if
语句中不会被执行的分支,连同 if
声明本身。只剩下实际可以执行的代码。
我有一个 python 脚本,它由一个包含 if/elif 语句的非常长的循环组成。为了调试循环的流程,我在每个 if/elif 块下都有一个 print 语句,并带有一个 #debug 尾随注释,如下所示:
if my_var1 == "foo":
print(my_var1)#debug
perform_various_calculations()
if my_var2 == "foobar":
print(my_var1, my_var2)#debug
pass
这在我仍在开发脚本时很好,但一旦我过了开发阶段,我想轻松切换这些打印语句。该脚本确实包含 other 我想 not 想要注释掉的打印语句,所以一些简单的东西,比如 find/replace 打印到 #print不行。
我考虑过将一个自定义打印函数放在一起,该函数仅在设置了调试标志时才打印,但我更希望这些行被完全注释掉。
你很幸运。 Python 有一个 __debug__
标志,如果您以优化模式启动解释器(-O
命令行标志),则该标志设置为 False
,否则设置为 True
。
最好的部分是,当您使用 if __debug__:
时,Python 去掉了 if
语句中不会被执行的分支,连同 if
声明本身。只剩下实际可以执行的代码。