为什么在 Python 中将生成器传递给函数时可以省略其周围的括号?
我只是在 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
I was just experimenting in Python with different syntax for passing in a generator as an argument to a function, and I realized that 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我确信阅读 python 语法 会回答这个问题。
如果您更喜欢简单的英语而不是语法:PEP-289 解释它。
I'm sure reading the python grammar will answer that question.
If you prefer plain English over grammars: PEP-289 explains it.