普通函数
def generator(): print(1) return 'a' ret = generator() print(ret)
生成器
#生成器函数/yield必须再函数里面且不能与return共用。 def generator(): print(1) yield 'a' #生成器函数执行之后会得到一个生成器作为一个返回值 ret = generator() print(ret) print(ret.__next__())
注意一点:
在生成器中yield不会结束一个程序。但是比较有意思的一点是当一个函数里面有多个yield的时候,需要多次调用和函数里面yield次数一样多的调用,例如:
#生成器函数/yield必须再函数里面且不能与return共用。 def generator(): print(1) yield 'a' print(2) yield 'b' #生成器函数执行之后会得到一个生成器作为一个返回值 ret = generator() print(ret) print(ret.__next__()) print(ret) print(ret.__next__())
如果只调用一次的话就会再第一次返回值时跳出函数并打印之前的代码,但是函数并没有结束,而是再等待下一次的调用。