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

Dar*_*Yin 6 python syntax language-implementation generator

我只是用不同的语法在Python中进行实验,以便将生成器作为参数传递给函数,我意识到虽然我一直这样做,

>>> sum((j for j in xrange(5)))
10
Run Code Online (Sandbox Code Playgroud)

这也有效:

>>> sum(j for j in xrange(5))
10
Run Code Online (Sandbox Code Playgroud)

这是在Linux上的Python 2.6.6上测试的.引擎盖下发生了什么?它只是语法糖吗?毕竟,通常一个解包的生成器是解释器无法解读的:

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

Thi*_*ter 5

我肯定读python语法会回答这个问题.

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

  • Python语法虽然不像Perl那么糟糕,但并不适合胆小的人.较短的答案是"是的,语法糖". (7认同)
  • 除语法外,您可能还想阅读PEP 289. (3认同)