我可以在python中将参数传递给paho回调函数吗?

2024-03-29 05:53:52 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在制作一个python程序来跟踪主题上的mqtt连接,这样我就可以拥有一个连接仪表板。{}然后把它传递到一个函数中,这样我就可以修改它了。你知道吗

我已经知道我可以通过声明变量为global来生成它,但是根据我的经验,声明事物为global是要不惜一切代价避免的,所以我想知道是否还有其他方法。你知道吗

(为了可读性,代码被删节)

def process_message(client, userdata, message):
    global connected_list

    # mess around with it and exit the callback


if __name__ == "__main__":
    connected_list = []

    # set up the mosquitto client and then

    client.on_message = process_message

    # tell it to subscribe and connect and then

    client.loop_forever()

基本上我知道可以用global来完成,但是如果可能的话我很想避免。有人有什么想法吗?你知道吗

谢谢!你知道吗

编辑

感谢大家的帮助,我混合了这两个建议,现在有了一个包含列表和锁的类,所以我可以在操作列表时轻松地锁定和解锁列表。你知道吗


Tags: andthe程序client声明message主题列表
1条回答
网友
1楼 · 发布于 2024-03-29 05:53:52

您可以尝试将所有回调作为方法放在一个类中。然后状态可以是在__init__中初始化的变量,而不是全局变量。这大大提高了代码的可重用性。你知道吗

class Handler:

    def __init__(self):
        self.connected_list = []

    def process_message(self, client, userdata, message):
        connected_list = self.connected_list

        # mess around with it and exit the callback


if __name__ == "__main__":
    handler = Handler()

    client.on_message = handler.process_message

    # tell it to subscribe and connect and then

    client.loop_forever()

相关问题 更多 >