我遇到一种情况,其中一个方法主要执行以下操作来模拟阻塞调用,而不是实际阻塞的内容:
result = [None]
self.waiting_list.append((additional_data, result))
self.wait_for_response() # when this returns, result will have been set by a different thread
self.waiting_list.remove((additional_data, result))
return result[0]
additional_data
指定了操作的一些信息,并且可能存在多个重叠 - 为了清晰起见,已删除列表等的锁定。
我的问题是PyCharm代码检查标记任何调用它的方法,并警告该方法不返回任何内容。我相信这是因为它只看到result[0]
设置为None
,然后在返回之前从未修改过。
假设我的信念是正确的,有没有办法暗示PyCharm在其他地方修改了价值?