使用Python yield的表达式和语句之间有什么区别

时间:2012-09-26 11:31:57

标签: python

  

可能重复:
  Expression Versus Statement

Python中的表达式语句有什么区别?

在我学习Python生成器之前,我从未想过这个问题“将yield用作表达式

另外,你能否在Python生成器的上下文中解释这个问题'将yield用作表达式'?

3 个答案:

答案 0 :(得分:8)

可以计算表达式以返回值。任何表达式也可以用作语句。

换句话说,如果你可以写a = ...,那么...就是一个表达式。因此2*3zip(x,y)是表达式。

raise Exception之类的内容是一种陈述,而不是一种表达:你不能写a = (raise Exception)

yield是一个表达式意味着b = (yield a)是生成器中的有效代码。如果您使用生成器的send()方法,b将设置为您传入的值。

答案 1 :(得分:2)

表达式只包含标识符,文字和运算符,其中运算符包括算术运算符和布尔运算符,函数调用operator(),订阅运算符[]和类似的,并且可以简化为某种“ value“,可以是任何Python对象。

另一方面,

语句是构成Python代码行(或几行)的所有内容。请注意,表达式也是语句。

希望它会对你有所帮助:)。

答案 2 :(得分:0)

我将它提炼到这个:

  • 表达式的东西 - 如前所述,它有一个值 - 和
  • 声明

当然,这种减少的问题是有一个警告;表达式仍然可以作为评估的一部分。但它最终还是有价值的。