为什么在将生成器传递给函数时可以省略外层括号?

9 投票
1 回答
1347 浏览
提问于 2025-04-16 10:37

我在用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 个回答

6

我相信阅读一下Python的语法就能解答这个问题。

如果你更喜欢简单明了的语言而不是复杂的语法,可以看看PEP-289,里面有详细的解释。

撰写回答