Итак, я делаю программу на python для отслеживания mqtt-соединений по темам, чтобы иметь панель мониторинга соединений. У меня есть переменная, которую я хочу передать в функцию on_message
, чтобы я мог ее изменить и распечатать.
Я уже знаю, что могу сделать переменную 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
, но я бы очень хотел избежать этого, если это возможно. У кого-нибудь есть идеи?
Спасибо!
EDIT
Спасибо за помощь, ребята, я сделал смесь обоих предложений, и теперь у меня есть класс, который содержит как список, так и блокировку, поэтому я могу легко блокировать и разблокировать список, когда я над ним работаю.