0

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

myqueue.put(('Thread Started'))

我这样调用 .get() :

item = myqueue.get()
print item

它打印这个:

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

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

4

3 回答 3

6

元组用逗号构造:

>>> (1,)
(1,)

然而,这只是“1”:

>>> (1)
1
于 2013-01-20T21:18:56.603 回答
5

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

myqueue.put(('Thread Started', ))
于 2013-01-20T21:19:03.777 回答
1

myqueue如果是Queue.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()
# -> ()
于 2013-01-20T21:34:00.397 回答