>>> import Queue
>>> q = Queue.PriorityQueue()
>>> a = (1, {'item': 'value'})
>>> q.put(a)
>>> q.queue
[(1, {'item': 'value'})]
>>> a[1]['count'] = 1
>>> q.queue
[(1, {'count': 1, 'item': 'value'})]
>>> q.get()
(1, {'count': 1, 'item': 'value'})
为什么当'a'的值在添加后改变时,队列中的值会发生变化?这个元组本身是不可变的,但是里面的字典是可变的。但我不明白为什么队列应该改变?优先级队列和易变性
检查'q.get(是了',你会发现它们都* *点到同一个元组。 – satoru
这是对保存在'Queue'中的元组的引用,而不是它的副本。 – satoru
运行'q.put(a)'时,通过引用将'a'传递给'q','a'是可变的。 – iMom0