为什么在将Python传递给函数时,可以省略Python中生成器的周围括号?

时间:2011-01-25 22:15:02

标签: python syntax generator language-implementation

我只是在Python中尝试使用不同的语法将生成器作为参数传递给函数,我意识到虽然我一直这样做,但

>>> sum((j for j in xrange(5)))
10

这也有效:

>>> sum(j for j in xrange(5))
10

这是在Linux上的Python 2.6.6上测试的。引擎盖下发生了什么?它只是语法糖吗?毕竟,通常一个解包的生成器对解释器来说是难以理解的:

>>> j for j in xrange(5)
  File "<stdin>", line 1
    j for j in xrange(5)
        ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:4)

我确信阅读python grammar会回答这个问题。

如果你更喜欢简单的英语而不是语法:PEP-289解释它。