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

发布于 2024-10-14 10:20:31 字数 442 浏览 5 评论 0原文

我只是在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如何视而不见 2024-10-21 10:20:31

我确信阅读 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文