我正在读这个
http://docs.python.org/dev/library/multiprocessing.html
特别是这个
p = multiprocessing.Process(target=time.sleep, args=(1000,))
我尝试了同样的事情,但是如果我在1000之后删除“,”它就不起作用了。所以我的问题是在这种情况下args =(1000,)背后的语义是什么?如果我放一个逗号而不是有什么区别?
p / s:我认为这是一个根本问题,如果有可能有人指出我可能会进一步阅读吗?感谢。感谢。
此致 安迪。
答案 0 :(得分:11)
如果您只是放(1000)
,Python假设您只是将表达式计算为数学,因此它简化为1000.想想5 + (1000) + 4
的结果。
就像上面的表达式会简化为1009
一样,一旦事情被简化,这就是你的行的样子:
p = multiprocessing.Process(target=time.sleep, args=1000)
你可以看到这根本不是一回事。 args
应该是一个参数元组,而不是一个整数。
如果你放(1000,)
,Python可以告诉你正在寻找一个只包含一个元素的元组,因为该表达式可以与简单的算术表达式区分开来,所以你最终会传递正确的东西。
答案 1 :(得分:2)
这很简单 - python解释器必须能够区分括号中的值 - (1000)
- 并将其放入元组:(1000,)
。
答案 2 :(得分:2)
这是一个元组。这是Python中的语法疣,但请想一想:你怎么知道(500)
是一个元组而不仅仅是500?由于括号也用于Python中的操作顺序,因此需要区分。如果元组中只有一个元素,则必须使用尾随逗号。
答案 3 :(得分:0)
(1000)
只是意味着它在一组括号中是1000。它与(1000 + 1000)具有相同的含义,正如您所看到的,这也不是一个元组。