微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用装饰器调试代码[Python]

如何解决使用装饰器调试代码[Python]

我正在用python编写一些代码,以尝试创建一个简单的面向套接字对象的服务器-客户端连接。我想保持代码干净,因此我希望排除过多的“ if”语句。所以我对服务器套接字的类定义如下:

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

如果您仍然想坚持使用装饰器,我可以建议以下话题(装饰器的一部分):James Powell: So you want to be a Python expert? | PyData Seattle 2017

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。