1

我目前正在学习 Python,为了了解幕后发生的事情,我写了很多打印输出。看到返回并评论所有消息非常麻烦,我已经开始编写一个模块,在该模块中我将所有消息设置为我想要使用它们的方法,然后使用布尔值来关闭和打开消息。问题是,我得到了 None 打印输出而不是我的调试消息,这不是很优雅。有什么办法可以解决这个问题?

一些示例代码:

def setDebug(bool):
    '''
    Toggles the debug messages
    '''

    global _debug
    _debug = bool


def setNewMsg(msg):
    '''
    Appends a new debug message to the list
    '''
    global _debugMsg
    _debugMsg.append(msg)

def getDebugMsg(index):
    '''
    Takes an int for a parameter and returns the debug message needed
    '''
    global _debug
    global _debugMsg

    if _debug == True:
        return _debugMsg[index] 
    else: 
        return
4

2 回答 2

8

既然您说您是 Python 新手,我认为您应该考虑使用该logging模块

看看这个链接HOWTO也真的很有帮助。

来自 Python 文档:

This module defines functions and classes which implement a flexible event logging system for applications and libraries.

您可以将日志记录模块设置为将所有打印内容保存到文件中,并且通过控制日志记录级别,您可以控制消息的级别。

例子:

import logging
logging.basicConfig(filename='mylog.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

如果level=logging.DEBUG您将能够看到所有消息,但通过更改level=logging.INFO它只会保存到文件中的信息及以上。试试他们非常有用的链接。

于 2013-11-03T11:18:31.507 回答
1

如果你的变量是假的,你会得到,None因为你要返回它。_debug

如果_debug为 false,则可以返回一个空字符串:

return ''

或者您可能想返回一条消息:

return 'Debug mode is not set to True'

什么都不返回与返回基本相同None。即使您不返回任何内容,Python 也会将返回值设置为None

>>> def test():
    pass

>>> a = test()
>>> print a
None

此外,如果您想使用您的方法而不是logging模块,您可能需要检查是否_debugMsg[index]存在。

if _debug:
    try:
       return _debugMsg[index]
    except IndexError:
       return 'The debug message hasn't listed yet.'

希望这可以帮助!

于 2013-11-03T11:26:39.800 回答