Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 收益-陈述还是表达?_Python_Expression_Yield - Fatal编程技术网

Python 收益-陈述还是表达?

Python 收益-陈述还是表达?,python,expression,yield,Python,Expression,Yield,所以,我一直在阅读,并发现了有关将值发送到生成器的信息 现在我有点糊涂了。屈服是一个陈述还是一个表达式?它不像函数那样使用括号语法,所以看起来像语句。但它返回值,所以它就像表达式一样 不久前,我进行了一次关于“为什么python没有‘if x=foo():(…)’”的对话”(为什么我们不能在if语句条件中赋值)。我说过,语句是原子的,所以赋值语句和if语句应该分开。现在,我不知道该怎么想了 ==编辑== 我读了我应得的一份书 -“值参数成为当前产量表达式的结果。” 因此,收益具有价值。我明白了,

所以,我一直在阅读,并发现了有关将值发送到生成器的信息

现在我有点糊涂了。屈服是一个陈述还是一个表达式?它不像函数那样使用括号语法,所以看起来像语句。但它返回值,所以它就像表达式一样

不久前,我进行了一次关于“为什么python没有‘if x=foo():(…)’”的对话”(为什么我们不能在if语句条件中赋值)。我说过,语句是原子的,所以赋值语句和if语句应该分开。现在,我不知道该怎么想了

==编辑==

我读了我应得的一份书

-“值参数成为当前产量表达式的结果。”

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

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

==最终答案==


显然,收益率可以两者兼而有之。只要读一下这些答案:我发现它们非常有用。

yield
is语句

但是,关于这个语法,您提出了一个很好的观点:
x=(yield y)
。 在我脑海中,我想不出python中还有其他语句可以这样使用

阅读这本书,当然还有这本传奇书,是很有用的。

。它过去是一个语句,最常用于整个语句,但在Python2.5中,作为新的协同例程支持的一部分,它被转换为一个表达式。它仍然通常被称为“收益率报表”,部分原因是过时的文档和知识,部分原因是它主要用作报表。你可以在报纸上读到

除下列表格外:

yield whatever
x = yield whatever

为了避免语法上的歧义,yield表达式在任何地方都必须用括号括起来。

yield
是一个语句您也可以阅读本文,只是想知道,为什么语句与表达式很重要?我自己从来没有真正想过这件事=/我还喜欢了解我使用的语言结构——我喜欢玩解析器、正式语言等。从我坐的地方看,这就像是搔痒的大脑。如果与生成器的
.send()
功能一起使用,它还会返回一个值。哈!所以,毕竟,我是对的,当我声称每个python语句都是原子的时候。这让我头脑清醒,非常感谢;)