在Python中调试变量

2 投票
2 回答
1193 浏览
提问于 2025-04-15 12:06

我想把调试信息和生产环境的信息分开,所以我想定义一个变量,这个变量可以在整个模块中使用。这个变量不能在环境中定义。有没有什么建议可以让这个全局变量在模块中的不同类之间重复使用?另外,有没有办法配置这个变量,让App Engine知道不要使用这段代码。

2 个回答

1

模块级别的变量对模块中的所有类都是全局的。

这是我的文件:mymodule.py

import this
import that

DEBUG = True

class Foo( object ):
    def __init__( self ):
        if DEBUG: print self.__class__, "__init__"
        # etc.

class Bar( object ):
    def do_work( self ):
        if DEBUG: print self.__class__, "do_work"
        # etc.

在这个模块中,所有的类实例都能找到一个名为 DEBUG 的变量。其他模块(比如 this.pythat.py)可以有自己的 DEBUG 变量。这些变量分别是 this.DEBUGthat.DEBUG,它们之间没有关系。

12

看看这个日志模块,它在Google App Engine上是完全支持的。你可以设置不同的日志级别,比如调试、警告、错误等等。这些信息会显示在开发服务器的控制台上,同时也会被记录在请求日志中。

如果你想在运行开发服务器时执行特定的代码,可以这样做:

if os.environ['SERVER_SOFTWARE'].startswith('Development'):
    print 'Hello world!'

SERVER_SOFTWARE这个变量是Google App Engine自动设置的。

至于模块特定的变量;模块其实就是对象,也可以像其他对象一样有值:

my_module.debug = True

撰写回答