我正在编写一个mqtt客户端,它在收集消息数据时永远循环。
该阵列目前是全球性的,但由于这被认为是不好的做法,我想避免这种情况。但是我不知道如何用另一个参数调用on_message。
如何避免将数组用作全局变量?
def on_message(client, userdata, msg):
global array
array.append(msg.payload)
array = []
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("JOHN", 1883, 60)
client.loop_forever()
编辑:我遵循了CarloLobranos的建议,现在使用userdata作为输入(因为API支持)。 谢谢你的回答!
答案 0 :(得分:0)
无论如何都没有理由在这里使用全局关键字,因为您正在改变现有列表。
答案 1 :(得分:0)
您可以将所有内容包装在函数中:
def mqtt_wrapper():
array = []
def on_message(client, userdata, msg):
array.append(msg.payload)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("JOHN", 1883, 60)
client.loop_forever()
mqtt_wrapper()
答案 2 :(得分:-1)
你可以创建一个包含所有内容的课程。