【发布时间】:2013-12-07 04:35:03
【问题描述】:
所以,我一直在阅读this,并了解了如何将值发送到生成器。
现在我有点困惑。 yield 是语句还是表达式?它不像函数那样使用括号语法,所以它看起来像语句。但它返回值,所以它就像表达式。
不久前,我曾讨论过“为什么 python 没有 'if x=foo(): (...)'?” (为什么我们不能在 if 语句条件中赋值)。我说过,语句是原子的,所以赋值语句和 if 语句应该分开。现在,我不知道该怎么想了。
== 编辑 ==
我读了相当多的书。
http://docs.python.org/2/reference/expressions.html#generator.send - “value 参数成为当前 yield 表达式的结果。”
因此,产生 HAS 值。我明白了,所有文档都说它是一个语句,但是如果语句可能有价值,那么表达式和语句之间到底有什么区别?
另外,我知道什么是生成器、协程等。我需要元语义或文档语义:D
== 最终答案 ==
【问题讨论】:
-
yield是一个声明 -
你也可以看这篇文章jeffknupp.com/blog/2013/04/07/…
-
只是想知道,为什么语句与表达式很重要?我自己从来没有真正考虑过。 =/
-
我喜欢了解我使用的语言的结构,还 - 我喜欢玩解析器、形式语言等。从我坐的地方看,就像大脑发痒。
标签: python expression yield