为什么在将生成器传递给函数时可以省略外层括号?
我在用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