为什么当我将一个元组放入这样的队列时:
myqueue.put(('Thread Started'))
我这样调用 .get() :
item = myqueue.get()
print item
它打印这个:
('T', 'h', 'r', 'e', 'a', 'd', ' ', 'S', 't', 'a', 'r', 't', 'e', 'd')
这种行为的原因是什么?我怎样才能找回我原来的元组?
为什么当我将一个元组放入这样的队列时:
myqueue.put(('Thread Started'))
我这样调用 .get() :
item = myqueue.get()
print item
它打印这个:
('T', 'h', 'r', 'e', 'a', 'd', ' ', 'S', 't', 'a', 'r', 't', 'e', 'd')
这种行为的原因是什么?我怎样才能找回我原来的元组?
元组用逗号构造:
>>> (1,)
(1,)
然而,这只是“1”:
>>> (1)
1
那不是元组,那是一对括号中的字符串。这是一个元组:
myqueue.put(('Thread Started', ))
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()
# -> ()