Python元组问题

drh*_*lau 1 python tuples

我正在读这个

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

特别是这个

p = multiprocessing.Process(target=time.sleep, args=(1000,))
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

问候,安迪.

Chr*_*per 11

如果你只是说(1000),Python假设你只是将表达式评估为数学,因此它被简化为1000.想想结果5 + (1000) + 4.

正如上面的表达式将被简化为1009,一旦简化了一下,这就是你的行看起来像:

p = multiprocessing.Process(target=time.sleep, args=1000)
Run Code Online (Sandbox Code Playgroud)

你可以看到这根本不是一回事.args应该是一个参数元组,而不是一个整数.

如果你放(1000,),Python可以告诉你正在寻找一个只包含一个元素的元组,因为该表达式可以与简单的算术表达式区分开来,所以你最终会传递正确的东西.