使用decorator[Python]调试代码



我正在用python编写一些代码,试图创建一个简单的面向套接字对象的服务器-客户端连接。我想保持我的代码干净,因此我更愿意排除过多的";如果";陈述因此,我对服务器套接字的类定义如下:

class Server(object):
    def __init__(server_ip=LOCALHOST, server_port=55555, debug=True):
        # other code
        pass

因此,如果有某种段落,进行某种调试看起来很有用,我会包含一个if语句,如下所示:

if debug:
    print("Something that helps the code debugging")

因此,我想知道是否有一种方法可以将这类代码块从主类中排除,并将它们添加到定义装饰器的包装函数中。这可能吗?如果是,我该如何实现此功能?

非常感谢你抽出时间,同时,对不起我的英语,我还在练习呢!

这取决于您,但实际上对于日志逻辑来说,使用内置的日志模块非常方便,它有一个清晰的设置模式:

import logging
logger = logging.getLogger(__name__)
log_handler = logging.streamHandler() # to output logs into stderr by default
logger.addHandler(log_handler)
logger.setLevel(logging.DEBUG) # here you set log level, you need to parametrize it (or dive deeper into logging docs)
def your_foo():
  logger.debug('Debug log message') # will only fire if log level == DEBUG

如果你仍然想坚持使用decorator,我可以建议你谈谈(关于decorator的一部分(:James Powell:那么你想成为Python专家吗?|PyData西雅图2017

最新更新