我在一个游戏引擎中运行Python2.4,我希望能够在需要时关闭所有打印。例如,我希望在调试版本中打开打印,然后在发布版本中关闭打印。 它也必须尽可能的透明。在
我在引擎的C代码中对此的解决方案是在vararg
宏中使用printf
函数,并将其定义为在发布版本中不执行任何操作。在
这是我目前的解决方案:
DebugPrints = True
def PRINT (*args):
global DebugPrints
if DebugPrints:
string = ""
for arg in args:
string += " " + str(arg)
print string
这使得切换打印输出变得很容易,但是可能有更好的方式来格式化字符串。我的主要问题是这实际上是在给程序添加更多的函数调用。在
我想知道有没有什么你可以做的打印关键字如何工作?在
logging module是“最好”的方法。。虽然我经常用一些简单的东西比如。。在
我知道答案已经被标记为正确,但是Python有一个调试标志,它提供了一个更清晰的解决方案。你这样使用它:
如果使用-O或-OO调用Python(就像通常在发布版本中一样),
__debug__
被设置为False
。更好的是__debug__
是解释器的一个特殊情况;当它编写pyc/pyo
文件时,它实际上会去掉这些代码,使生成的代码更小/更快。请注意,您不能为__debug__
赋值,因此它完全基于这些命令行参数。在是的,您可以将
sys.stdout
分配给任何您想要的。使用一个不执行任何操作的write
方法创建一个小类:使用同样的技术,您还可以通过将
sys.stdout
设置为打开的文件对象,将打印记录到文件中。在相关问题 更多 >
编程相关推荐