开发者

Why can you omit the surrounding parentheses for generators in Python when passing it into a function?

开发者 https://www.devze.com 2023-02-07 04:52 出处:网络
I was just experimenting in Python with different syntax for passing in a generator as an argument to a function, and I realized tha开发者_开发百科t although I\'ve been doing this,

I was just experimenting in Python with different syntax for passing in a generator as an argument to a function, and I realized tha开发者_开发百科t although I've been doing this,

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

this works as well:

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

This is tested on Python 2.6.6 on Linux. What's going on under the hood? Is it just syntactic sugar? After all, usually an unwrapped generator is indecipherable to the interpreter:

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


I'm sure reading the python grammar will answer that question.

If you prefer plain English over grammars: PEP-289 explains it.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号