为什么当我将一个元组放入这样的队列时:
myqueue.put(('Thread Started'))
我这样打电话给.get():
item = myqueue.get()
print item
打印出来:
('T', 'h', 'r', 'e', 'a', 'd', ' ', 'S', 't', 'a', 'r', 't', 'e', 'd')
这种行为的原因是什么?我怎样才能恢复原来的元组?
答案 0 :(得分:5)
使用逗号构建元组:
>>> (1,)
(1,)
然而,这只是'1':
>>> (1)
1
答案 1 :(得分:5)
这不是一个元组,这是一对括号中的字符串。这是一个元组:
myqueue.put(('Thread Started', ))
答案 2 :(得分: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()
# -> ()