我想在项目的每个模块中定义一个本地调试标志,并将其与 debug 变量结合使用,以便能够进行部分调试。例如,我想调试模块mod1我将定义
mod1_dflag = True
然后在每个调试部分我想使用:
if __debug__:
if mod1_dflag:
debug code block
如果我这样做,Python优化器是否会完全忽略if if语句? 更准确地说,在使用-O标志运行脚本后,这段代码会变成什么?
该解决方案由Oliver Bestwalter建议,可在以下位置找到: stackoverflow.com/a/2830411/2626627
答案 0 :(得分:0)
__debug__
默认为True
。当python以优化模式运行时,它只被设置为False
- 人们通常不会这样做。
优化命令行参数:
-O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-OO : remove doc-strings in addition to the -O optimizations
您可以做的最好的事情是使用环境变量。例如:
DEBUG = os.getenv('DEBUG')
if DEBUG:
do debug stuff
然后,您可以在shell中执行export DEBUG=y
或在Windows上set DEBUG=y
运行应用程序以启用调试模式。