Python在投票数据时避免全局变量



我正在编写一个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所支持的那样)。感谢所有答案!

您可以将所有内容包装在功能中:

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()

没有理由在这里使用全局关键字,因为您正在突变现有列表。

您可以做一个包括所有内容的类。

相关内容

  • 没有找到相关文章