python全局变量未保存全局

时间:2012-02-09 19:52:36

标签: python global-variables

NexusConnectedClients = []

class Thread1(NexusCore.Thread):
    def Run():
        global NexusConnectedClients
        if(IncomingCommand == "ADDCLIENT"):
            NewClientOBJ = [
                LastCID,
                ClientType,
                ClientADDR,
                ClientObject,
                Args[1],
                Args[2],
                '{"events":[]}'
            ]
            NexusConnectedClients.append(NewClientOBJ)
        elif(IncomingCommand == "LISTCLIENTS"):
            SendResponse(NexusConnectedClients)

当我添加客户端时,没关系。当我读取NexusConnectedClients变量时,它会添加到列表中。 但是当我运行LISTCLIENTS函数时,列表为空。有什么问题?

我简化了一下代码。所有变量都已设置,所有其他全局变量都可以正常工作。

修改 我发现错误,这个代码没有错,但是另一个函数删除了NexusConnectedClients数组

中的元素

2 个答案:

答案 0 :(得分:0)

您无需将NexusConnectedClients声明为全局,因为它在run方法中可见。如果要(重新)绑定全局范围中的名称,则必须将变量声明为全局变量。当一个变量是可修改的,而列表是,只需修改它。

相反,您需要做的是规范对NexusConnectedClients的访问。您正在修改线程内的共享变量,可能不止一个。使用锁。说,我认为在这么小的片段中不能再说了什么。

答案 1 :(得分:0)

解决了这个问题。没有从先前的测试中删除一行代码。该行重置了数组