yield 关键字
很多 Python 开发者,尤其是新手,对 yield 关键字总是望而生畏,据 Stack Overflow 网站统计,yield 关键字的被提问频次高居Python类首位。那么 yield 关键字到是干什么的?从以下几个方面论述。
直观理解 yield
要想通俗理解 yield,可结合函数的返回值关键字 return,yield 是一种特殊的 return。说是特殊的 return,是因为执行遇到 yield 时,立即返回,这是与 return 的相似之处。
不同之处在于:下次进入函数时直接到 yield 的下一个语句,而 return 后再进入函数,还是从函数体的第一行代码开始执行。
带 yield 的函数是生成器,通常与 next 函数结合用。下次进入函数,意思是使用 next 函数进入到函数体内。
举个例子说明 yield 的基本用法。下面是被熟知的普通函数 f,f() 就会立即执行函数:
In [1]: def f():
...: print('enter f...')
...: return 'hello'
In [2]: ret = f()
enter g...
In [3]: ret
Out[3]: 'hello'
但是,注意观察下面新定义的函数 f,因为带有 yield,所以是生成器函数 f:
def f():
print('enter f...')
yield 4
print('i am next sentence of yield')
执行 f,并未打印任何信息: