Python-队列-为什么我的元组会被切碎?

Python-队列-为什么我的元组会被切碎?,python,string,multithreading,queue,tuples,Python,String,Multithreading,Queue,Tuples,为什么我将一个元组放入这样的队列中: myqueue.put(('Thread Started')) item = myqueue.get() print item 我这样调用.get(): myqueue.put(('Thread Started')) item = myqueue.get() print item 它打印这个: ('T', 'h', 'r', 'e', 'a', 'd', ' ', 'S', 't', 'a', 'r', 't', 'e', 'd') 这种行为的原因

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

myqueue.put(('Thread Started'))
item = myqueue.get()
print item
我这样调用.get():

myqueue.put(('Thread Started'))
item = myqueue.get()
print item
它打印这个:

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

这种行为的原因是什么?如何恢复原始元组?

元组由逗号构成:

>>> (1,)
(1,)
t = 1,
# -> (1,)
t = 'a', 'b', 'c'
# -> ('a', 'b', 'c')
然而,这只是“1”:

>>> (1)
1

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

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

如果
myqueue
Queue.Queue
实例,则编写的代码不应生成输出

您的代码相当于:

myqueue.put('Thread Started')
item = myqueue.get()
print item
它应该只生成:
线程已启动

元组是用逗号创建的:

>>> (1,)
(1,)
t = 1,
# -> (1,)
t = 'a', 'b', 'c'
# -> ('a', 'b', 'c')
或者可以显式调用构造函数:

t = tuple("abc")
# -> ('a', 'b', 'c')
例外情况是使用
()
创建的空元组:


这不是元组,而是括号中的字符串。如果希望它是一个元组,则需要一个逗号:
('threadstarted',)