Python - 队列 - 为什么我的元组会被砍掉?

时间:2013-01-20 21:17:48

标签: python string multithreading queue tuples

为什么当我将一个元组放入这样的队列时:

myqueue.put(('Thread Started'))

我这样打电话给.get():

item = myqueue.get()
print item

打印出来:

('T', 'h', 'r', 'e', 'a', 'd', ' ', 'S', 't', 'a', 'r', 't', 'e', 'd')

这种行为的原因是什么?我怎样才能恢复原来的元组?

3 个答案:

答案 0 :(得分:5)

使用逗号构建元组:

>>> (1,)
(1,)
然而,这只是'1':

>>> (1)
1

答案 1 :(得分:5)

这不是一个元组,这是一对括号中的字符串。这是一个元组:

myqueue.put(('Thread Started', ))

答案 2 :(得分:1)

如果myqueueQueue.Queue实例,则写入的代码不应生成输出。

您的代码相当于:

myqueue.put('Thread Started')
item = myqueue.get()
print item

它应该只生成:Thread Started

使用逗号创建元组:

t = 1,
# -> (1,)
t = 'a', 'b', 'c'
# -> ('a', 'b', 'c')

或者你可以明确地调用构造函数:

t = tuple("abc")
# -> ('a', 'b', 'c')

例外是使用()

创建的空元组
t = ()
# -> ()
t = tuple()
# -> ()