gpt4 book ai didi

python - yield - 语句或表达式?

转载 作者:太空狗 更新时间:2023-10-29 20:40:49 25 4
gpt4 key购买 nike

所以,我一直在阅读 this ,并了解如何将值发送到生成器。

现在我有点困惑。 yield 是语句还是表达式?它不像函数那样使用括号语法,所以它看起来像语句。但它返回值,所以它就像表达式。

不久之前,我曾讨论过“为什么 python 没有‘if x=foo(): (...)’?” (为什么我们不能在 if 语句条件中赋值)。我说过,语句是原子的,所以赋值语句和 if 语句应该分开。现在,我不知道该怎么想了。

== 编辑 ==

我做了我公平的阅读。

http://docs.python.org/2/reference/expressions.html#generator.send - “value 参数成为当前 yield 表达式的结果。”

因此,yield 具有值(value)。我明白了,所有文档都说它是一个语句,但是如果语句可能有值(value),那么表达式和语句之间到底有什么区别?

另外,我知道什么是生成器、协程等等。我需要元语义,或者文档的语义 :D

== 最终答案 ==

显然,yield 可以兼而有之。只需阅读这些答案:(1)(2) - 我发现它们最有帮助。

最佳答案

yield is an expression .它曾经是一个语句,最常被用作一个完整的语句,但在 Python 2.5 中,它变成了一个表达式,作为新协程支持的一部分。它仍然通常被称为“ yield 声明”,部分原因是过时的文档和知识,部分原因是它主要用作声明。您可以在 PEP 342 中阅读相关内容.

除了以下形式:

yield whatever
x = yield whatever

yield 表达式在出现的任何地方都必须用括号括起来,以避免语法中的歧义。

关于python - yield - 语句或表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20142450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com