return语句使python函数退出并向其调用者返回一个值。通常,函数的目的是接受输入并返回某些东西。return语句一旦执行,将立即终止函数的执行,即使它不是函数中的最后一条语句也是如此。
返回值的函数有时称为卓有成效的函数。
给定的代码给出以下输出
def sum(a,b): return a+b sum(5,16)
输出结果
21
生成器是迭代器或迭代器,例如列表和元组,但是您只能对其进行一次迭代。这是因为它们没有将所有值存储在内存中,而是即时生成这些值:
mygenerator = (x*x for x in range(4)) for i in mygenerator: print i,
0 1 4 9
由于生成器只能使用一次,因此我们无法再次在生成器中执行i运算:生成器只能计算0,然后忽略它,然后计算1、4,最后一次计算9,就可以了。
yield是一个像return一样使用的关键字,只是函数将返回一个生成器。
我们使用以下代码访问生成器的返回,如下所示
def createGenerator(): for i in range(4): yield i*i # this code creates a generator mygenerator = createGenerator()print(mygenerator) # mygenerator is an object! # for i in mygenerator: # print i, print(next(mygenerator)) print(next(mygenerator)) print(next(mygenerator)) print(next(mygenerator)) print(next(mygenerator))
<generator object createGenerator at 0xb71e27fc> 0 1 4 9 Traceback (most recent call last): File "yieldgen1.py", line 12, in <module> print(next(mygenerator)) StopIteration
上例中的yield语句创建了mygenerator。它只能使用一次。我们使用命令next(mygenerator)进行计算;它只能使用一次:首先计算0,然后将其忽略,然后第二次计算1,第三次计算4,第四次计算9,然后在第五次抛出,因为用尽了列表元素,因此出现StopIteration错误。