Python元组问题

时间:2011-05-20 03:37:58

标签: python tuples

我正在读这个

http://docs.python.org/dev/library/multiprocessing.html

特别是这个

p = multiprocessing.Process(target=time.sleep, args=(1000,))

我尝试了同样的事情,但是如果我在1000之后删除“,”它就不起作用了。所以我的问题是在这种情况下args =(1000,)背后的语义是什么?如果我放一个逗号而不是有什么区别?

p / s:我认为这是一个根本问题,如果有可能有人指出我可能会进一步阅读吗?感谢。

感谢。

此致 安迪。

4 个答案:

答案 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)具有相同的含义,正如您所看到的,这也不是一个元组。