python模块中的本地标志用于调试目的

时间:2014-10-27 08:48:41

标签: python debugging optimization

我想在项目的每个模块中定义一个本地调试标志,并将其与 debug 变量结合使用,以便能够进行部分调试。例如,我想调试模块mod1我将定义

mod1_dflag = True

然后在每个调试部分我想使用:

if __debug__:
    if mod1_dflag:
        debug code block

如果我这样做,Python优化器是否会完全忽略if if语句? 更准确地说,在使用-O标志运行脚本后,这段代码会变成什么?

该解决方案由Oliver Bestwalter建议,可在以下位置找到: stackoverflow.com/a/2830411/2626627

1 个答案:

答案 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运行应用程序以启用调试模式。