我之前发过一个关于执行的脚本的问题 合着要求。由于队列为空,此脚本失败。
我进一步研究了这个问题,并提出了这个简单的问题。 我们有一个基于数组创建队列的函数。 然后我们遍历队列,打印值,直到队列为空。
try:
from queue import Queue
except:
pass
try:
from Queue import Queue
except:
pass
def test():
q = Queue()
a = [1,2,3]
map(q.put, a)
print("queue size after insertion: ", str(q.qsize()))
while not q.empty():
item = q.get()
print(item)
if __name__ == "__main__":
print("Starting test.")
test()
print("Test finished.")
在python2中,一切正常。插入后的队列大小为3
在python3中,插入后,队列大小为0,因此没有执行队列上的迭代。
解: 更改插入方法解决了问题。 替换:
map(q.put, a)
有:
for item in a:
q.put(item)
我想知道是什么原因导致python3中的map函数出现这个问题。